{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:24.127563400Z",
     "start_time": "2024-09-19T12:02:23.551021400Z"
    }
   },
   "outputs": [],
   "source": [
    "# import libraries necessary for this project\n",
    "import os, sys, pickle\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from datetime import date\n",
    "from sklearn.model_selection import KFold, train_test_split, StratifiedKFold, cross_val_score, GridSearchCV\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.linear_model import SGDClassifier, LogisticRegression\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.metrics import log_loss, roc_auc_score, auc, roc_curve\n",
    "import lightgbm as lgb\n",
    "\n",
    "\n",
    "# matplotlib库生成的图形以内联的形式显示,而不是弹出一个单独的窗口\n",
    "%matplotlib inline\n",
    "# 'retina'是一种高质量的图形格式适用于高分辨率显示器,确保图形在高分辨率显示器上看起来更加清晰。\n",
    "%config InlineBackend.figure_format = 'retina'\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id Coupon_id Discount_rate Distance Date_received  \\\n0  1439408         2632      null          null        0          null   \n1  1439408         4663     11002        150:20        1      20160528   \n2  1439408         2632      8591          20:1        0      20160217   \n3  1439408         2632      1078          20:1        0      20160319   \n4  1439408         2632      8591          20:1        0      20160613   \n\n       Date  \n0  20160217  \n1      null  \n2      null  \n3      null  \n4      null  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>Coupon_id</th>\n      <th>Discount_rate</th>\n      <th>Distance</th>\n      <th>Date_received</th>\n      <th>Date</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>null</td>\n      <td>null</td>\n      <td>0</td>\n      <td>null</td>\n      <td>20160217</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1439408</td>\n      <td>4663</td>\n      <td>11002</td>\n      <td>150:20</td>\n      <td>1</td>\n      <td>20160528</td>\n      <td>null</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>8591</td>\n      <td>20:1</td>\n      <td>0</td>\n      <td>20160217</td>\n      <td>null</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>1078</td>\n      <td>20:1</td>\n      <td>0</td>\n      <td>20160319</td>\n      <td>null</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>8591</td>\n      <td>20:1</td>\n      <td>0</td>\n      <td>20160613</td>\n      <td>null</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# keep_default_na=False 读取CSV文件时，不会将默认的缺失值（如空字符串）转换为pandas的NaN值。\n",
    "dfoff = pd.read_csv('D:\\PycharmProjects\\pythonProject\\data\\ccf_offline_stage1_train.csv',keep_default_na=False)\n",
    "dftest = pd.read_csv('D:\\PycharmProjects\\pythonProject\\data\\ccf_offline_stage1_test_revised.csv',keep_default_na=False)\n",
    "\n",
    "dfonline = pd.read_csv('D:\\PycharmProjects\\pythonProject\\data\\ccf_online_stage1_train.csv',keep_default_na=False)\n",
    "\n",
    "dfoff.head(5)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:28.688992100Z",
     "start_time": "2024-09-19T12:02:23.571344Z"
    }
   },
   "id": "61f53febdbf6bfcf"
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1754884 entries, 0 to 1754883\n",
      "Data columns (total 7 columns):\n",
      " #   Column         Dtype \n",
      "---  ------         ----- \n",
      " 0   User_id        int64 \n",
      " 1   Merchant_id    int64 \n",
      " 2   Coupon_id      object\n",
      " 3   Discount_rate  object\n",
      " 4   Distance       object\n",
      " 5   Date_received  object\n",
      " 6   Date           object\n",
      "dtypes: int64(2), object(5)\n",
      "memory usage: 93.7+ MB\n"
     ]
    }
   ],
   "source": [
    "# 快速查看DataFrame dfoff 的基本信息(列数,非空值计数,数据类型,内存使用)\n",
    "dfoff.info()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:28.702519500Z",
     "start_time": "2024-09-19T12:02:28.699063400Z"
    }
   },
   "id": "2cee0df309c7259e"
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "有优惠券，购买商品条数 75382\n",
      "无优惠券，购买商品条数 701602\n",
      "有优惠券，不购买商品条数 977900\n",
      "无优惠券，不购买商品条数 0\n"
     ]
    }
   ],
   "source": [
    "print('有优惠券，购买商品条数', dfoff[(dfoff['Date_received'] != 'null') & (dfoff['Date'] != 'null')].shape[0])\n",
    "print('无优惠券，购买商品条数', dfoff[(dfoff['Date_received'] == 'null') & (dfoff['Date'] != 'null')].shape[0])\n",
    "print('有优惠券，不购买商品条数', dfoff[(dfoff['Date_received'] != 'null') & (dfoff['Date'] == 'null')].shape[0])\n",
    "print('无优惠券，不购买商品条数', dfoff[(dfoff['Date_received'] == 'null') & (dfoff['Date'] == 'null')].shape[0])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:29.390380400Z",
     "start_time": "2024-09-19T12:02:28.855898800Z"
    }
   },
   "id": "5586615bf0e2fac7"
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.在测试集中出现的用户但训练集没有出现用户ID {2495873, 1286474}\n",
      "2.在测试集中出现的商户但训练集没有出现商户ID {5920}\n"
     ]
    }
   ],
   "source": [
    "# 从测试集dftest中提取User_id列，并将其转换为一个集合,从训练集dfoff中提取User_id列，并将其也转换为一个集合\n",
    "# 使用集合的差集操作（-），找出在测试集中出现但在训练集中未出现的用户ID\n",
    "print('1.在测试集中出现的用户但训练集没有出现用户ID', set(dftest['User_id']) - set(dfoff['User_id']))\n",
    "# 测试集dftest中提取Merchant_id列，并将其转换为一个集合,从训练集dfoff中提取Merchant_id列，并将其也转换为一个集合\n",
    "# 使用集合的差集操作（-），找出在测试集中出现但在训练集中未出现的商户ID。\n",
    "print('2.在测试集中出现的商户但训练集没有出现商户ID', set(dftest['Merchant_id']) - set(dfoff['Merchant_id']))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:29.660632900Z",
     "start_time": "2024-09-19T12:02:29.390380400Z"
    }
   },
   "id": "39bbdd45aa61b413"
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Discount_rate 类型: ['null' '150:20' '20:1' '200:20' '30:5' '50:10' '10:5' '100:10' '200:30'\n",
      " '20:5' '30:10' '50:5' '150:10' '100:30' '200:50' '100:50' '300:30'\n",
      " '50:20' '0.9' '10:1' '30:1' '0.95' '100:5' '5:1' '100:20' '0.8' '50:1'\n",
      " '200:10' '300:20' '100:1' '150:30' '300:50' '20:10' '0.85' '0.6' '150:50'\n",
      " '0.75' '0.5' '200:5' '0.7' '30:20' '300:10' '0.2' '50:30' '200:100'\n",
      " '150:5']\n",
      "Distance 类型: ['0' '1' 'null' '2' '10' '4' '7' '9' '3' '5' '6' '8']\n"
     ]
    }
   ],
   "source": [
    "# 显示Discount_rate(优惠率)列中所有不同的值 \n",
    "print('Discount_rate 类型:',dfoff['Discount_rate'].unique())\n",
    "# 显示Distance列中所有不同的值, 用户最近门店距离500m,null表示无此信息，0表示低于500米，10表示大于5公里\n",
    "print('Distance 类型:', dfoff['Distance'].unique())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:29.768996400Z",
     "start_time": "2024-09-19T12:02:29.660632900Z"
    }
   },
   "id": "3535524d8a98d5b5"
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.         0.86666667 0.95       0.9        0.83333333 0.8\n",
      " 0.5        0.85       0.75       0.66666667 0.93333333 0.7\n",
      " 0.6        0.96666667 0.98       0.99       0.975      0.33333333\n",
      " 0.2        0.4       ]\n",
      "[ 0  1 -1  2 10  4  7  9  3  5  6  8]\n",
      "[0.83333333 0.9        0.96666667 0.8        0.95       0.75\n",
      " 0.98       0.5        0.86666667 0.6        0.66666667 0.7\n",
      " 0.85       0.33333333 0.94       0.93333333 0.975      0.99      ]\n",
      "[ 1 -1  5  2  0 10  3  6  7  4  9  8]\n"
     ]
    }
   ],
   "source": [
    "# 转换和处理Discount_rate和Distance这两列的数据\n",
    "\n",
    "# 函数定义\n",
    "# 检查row（Discount_rate列中的一个值）是否包含字符串'null'或冒号':'。\n",
    "def getDiscountType(row):\n",
    "    # 如果row是'null'，返回'null'。\n",
    "    if row == 'null':\n",
    "        return 'null'\n",
    "    # 如果row包含冒号，返回1\n",
    "    elif ':' in row:\n",
    "        return 1\n",
    "    # 否则，返回0\n",
    "    else:\n",
    "        return 0\n",
    "\n",
    "# 这个函数用于将Discount_rate列中的值转换为折扣率\n",
    "def convertRate(row):\n",
    "    # 如果row是'null'，返回1.0（表示没有折扣）\n",
    "    if row == 'null':\n",
    "        return 1.0\n",
    "    # 如果row包含冒号，将row按冒号分割，并计算折扣率（原始价格减去折扣后价格，然后除以原始价格）\n",
    "    elif ':' in row:\n",
    "        rows = row.split(':')\n",
    "        return 1.0 - float(rows[1])/float(rows[0])\n",
    "    # 否则，直接将row转换为浮点数\n",
    "    else:\n",
    "        return float(row)\n",
    "# 这个函数用于从Discount_rate列中提取“满”的数值  （满x减y）\n",
    "def getDiscountMan(row):\n",
    "    # 如果row包含冒号，将row按冒号分割，并返回第一个值（整数）\n",
    "    if ':' in row:\n",
    "        rows = row.split(':')\n",
    "        return int(rows[0])\n",
    "    # 否则，返回0\n",
    "    else:\n",
    "        return 0\n",
    "\n",
    "# 这个函数用于从Discount_rate列中提取“减”的数值\n",
    "def getDiscountJian(row):\n",
    "    # 如果row包含冒号，将row按冒号分割，并返回第二个值（整数）\n",
    "    if ':' in row:\n",
    "        rows = row.split(':')\n",
    "        return int(rows[1])\n",
    "    # 否则，返回0\n",
    "    else:\n",
    "        return 0\n",
    "# 主函数     processData函数接受一个DataFrame作为参数，并对该DataFrame进行处理\n",
    "def processData(df):\n",
    "   # 使用apply方法，将convertRate、getDiscountMan、getDiscountJian和getDiscountType函数\n",
    "   # 应用于Discount_rate列，分别生成新的列discount_rate、discount_man、discount_jian和discount_type \n",
    "    df['discount_rate'] = df['Discount_rate'].apply(convertRate)\n",
    "    df['discount_man'] = df['Discount_rate'].apply(getDiscountMan)\n",
    "    df['discount_jian'] = df['Discount_rate'].apply(getDiscountJian)\n",
    "    df['discount_type'] = df['Discount_rate'].apply(getDiscountType)\n",
    "   # 打印discount_rate列的唯一值\n",
    "    print(df['discount_rate'].unique())\n",
    "    \n",
    "    # 对Distance列进行处理，将'null'值替换为-1，并转换为整数类型\n",
    "    df['distance'] = df['Distance'].replace('null', -1).astype(int)\n",
    "   # 打印distance列的唯一值\n",
    "    print(df['distance'].unique())\n",
    "   # 返回处理后的DataFrame\n",
    "    return df\n",
    "# 应用函数 processData函数被应用于dfoff和dftest两个DataFrame，对它们进行相同的数据处理\n",
    "dfoff = processData(dfoff)\n",
    "dftest = processData(dftest)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:32.132602400Z",
     "start_time": "2024-09-19T12:02:29.778739800Z"
    }
   },
   "id": "5847db5af744cdb4"
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id Coupon_id Discount_rate Distance Date_received  \\\n0  1439408         2632      null          null        0          null   \n1  1439408         4663     11002        150:20        1      20160528   \n\n       Date  discount_rate  discount_man  discount_jian discount_type  \\\n0  20160217       1.000000             0              0          null   \n1      null       0.866667           150             20             1   \n\n   distance  \n0         0  \n1         1  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>Coupon_id</th>\n      <th>Discount_rate</th>\n      <th>Distance</th>\n      <th>Date_received</th>\n      <th>Date</th>\n      <th>discount_rate</th>\n      <th>discount_man</th>\n      <th>discount_jian</th>\n      <th>discount_type</th>\n      <th>distance</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>null</td>\n      <td>null</td>\n      <td>0</td>\n      <td>null</td>\n      <td>20160217</td>\n      <td>1.000000</td>\n      <td>0</td>\n      <td>0</td>\n      <td>null</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1439408</td>\n      <td>4663</td>\n      <td>11002</td>\n      <td>150:20</td>\n      <td>1</td>\n      <td>20160528</td>\n      <td>null</td>\n      <td>0.866667</td>\n      <td>150</td>\n      <td>20</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看结果\n",
    "dfoff.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:32.132602400Z",
     "start_time": "2024-09-19T12:02:32.111950500Z"
    }
   },
   "id": "230ed2d4824ecee5"
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id  Coupon_id Discount_rate Distance  Date_received  \\\n0  4129537          450       9983          30:5        1       20160712   \n1  6949378         1300       3429          30:5     null       20160706   \n\n   discount_rate  discount_man  discount_jian  discount_type  distance  \n0       0.833333            30              5              1         1  \n1       0.833333            30              5              1        -1  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>Coupon_id</th>\n      <th>Discount_rate</th>\n      <th>Distance</th>\n      <th>Date_received</th>\n      <th>discount_rate</th>\n      <th>discount_man</th>\n      <th>discount_jian</th>\n      <th>discount_type</th>\n      <th>distance</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4129537</td>\n      <td>450</td>\n      <td>9983</td>\n      <td>30:5</td>\n      <td>1</td>\n      <td>20160712</td>\n      <td>0.833333</td>\n      <td>30</td>\n      <td>5</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>6949378</td>\n      <td>1300</td>\n      <td>3429</td>\n      <td>30:5</td>\n      <td>null</td>\n      <td>20160706</td>\n      <td>0.833333</td>\n      <td>30</td>\n      <td>5</td>\n      <td>1</td>\n      <td>-1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看结果\n",
    "dftest.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:32.144089800Z",
     "start_time": "2024-09-19T12:02:32.125788500Z"
    }
   },
   "id": "b128e833bf0c300b"
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "优惠券收到日期从 20160101 到 20160615\n",
      "消费日期从 20160101 到 20160630\n"
     ]
    }
   ],
   "source": [
    "# 这里有两个时间，Date_received和Date，即优惠券收到日期和消费日期\n",
    "\n",
    "# 从Date_received列中提取所有不同的值，并将这些值存储在变量date_received中\n",
    "date_received = dfoff['Date_received'].unique()\n",
    "# 通过条件索引date_received != 'null'过滤掉date_received中的'null'值\n",
    "# 使用sorted()函数对过滤后的日期进行排序，并将排序后的日期重新赋值给date_received变量\n",
    "date_received = sorted(date_received[date_received != 'null'])\n",
    "\n",
    "# 使用unique()方法从Date列中提取所有不同的值，并将这些值存储在变量date_buy中\n",
    "date_buy = dfoff['Date'].unique()\n",
    "# 过滤掉date_buy中的'null'值,使用sorted()函数对过滤后的日期进行排序，并将排序后的日期重新赋值给date_buy变量\n",
    "date_buy = sorted(date_buy[date_buy != 'null'])\n",
    "\n",
    "# 打印出优惠券收到日期的最小值和最大值, [0]序后列表的第一个元素（最小值,[-1]是最后一个元素（最大值）\n",
    "print('优惠券收到日期从',date_received[0],'到', date_received[-1])\n",
    "# 打印出消费日期的最小值和最大值\n",
    "print('消费日期从', date_buy[0], '到', date_buy[-1])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:32.259003400Z",
     "start_time": "2024-09-19T12:02:32.132602400Z"
    }
   },
   "id": "8c5be5762dee9789"
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "outputs": [],
   "source": [
    "# 查看每天收到优惠券的顾客数目以及收到优惠券后使用优惠券消费的顾客数目\n",
    "\n",
    "# 筛选出Date_received列中非'null'的行,选择Date_received和Date列，并按Date_received列进行分组\n",
    "# 使用count()函数计算每个分组的行数，即每天收到优惠券的数目,将结果存储在couponbydate变量中\n",
    "couponbydate = dfoff[dfoff['Date_received'] != 'null'][['Date_received', 'Date']].groupby(['Date_received'], as_index=False).count()\n",
    "# 将couponbydate DataFrame的列名重命名为Date_received和count\n",
    "couponbydate.columns = ['Date_received','count']\n",
    "\n",
    "# 筛选出同时满足Date和Date_received列非'null'的行,选择Date_received和Date列，并按Date_received列进行分组\n",
    "# 使用count()函数计算每个分组的行数，即每天使用优惠券的数目,将结果存储在buybydate变量中\n",
    "buybydate = dfoff[(dfoff['Date'] != 'null') & (dfoff['Date_received'] != 'null')][['Date_received', 'Date']].groupby(['Date_received'], as_index=False).count()\n",
    "# 将buybydate DataFrame的列名重命名为Date_received和count\n",
    "buybydate.columns = ['Date_received','count']"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:32.855354100Z",
     "start_time": "2024-09-19T12:02:32.320218300Z"
    }
   },
   "id": "6ec61931118e4a1d"
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 1200x800 with 2 Axes>",
      "image/png": "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XqwvvvhC58+ft9snJCRE/fv311NPPaXg4GCH423atElDhw61tn/66SfVqFFDL7zwgtasWWPoW6NGDU2YMEF9+vRxqWZ7jh07po8++kjff/+90tLS7PapUaOG7r//fg0bNizfANkjjzyizZs3292X+31J+d9PrsrOztY333yjJUuWaN++fXb7eHt767bbbtOYMWPUrFkzp8bdvXu3PvroI61fv95mablrateuraFDh2rw4MEFhnkWLFighQsXWtvXnvOC5L0nnnnmGY0ePdrh+CEhIdq0aZOys7P14YcfKiYmRvHx8TbHhISE6MEHH9QTTzzh0nJ5V65c0eeff65ly5YpNjbWbh8/Pz/dcsstTp/zbt26Wce69h6TkpI0d+5cffPNN0pKSrI5xt/fX7169dK4ceMUERHhdP0FKa7nMCMjQ8uXL9fSpUt18uRJuz8rMDBQvXr10ujRo11+D6dOndKHH36o7777TsnJyXb71KpVSw8//LCGDh3qdLhmw4YNeu+997Rr1y5lZ2fb7Pfx8dGNN96ocePGqVWrVgWOl/dz4dChQ9bXK1as0Msvv2zom7tdkF9++UVPPvmktf3YY48Zft/lVtLX48cff9S7775r93PI19dXPXv21KRJkxQWFubSuAAAAADKn9L/J4UAAAAAAKBc+fLLL9W3b1/9/PPPdgNI0tUZkubPn6/7779fZrPZzRXmLzMzUxMmTNDzzz9vN4AkSSkpKfr3v/+txx9/XKmpqZKkRYsW6dFHH7UbQJKuhk2+/fZbDRw40KX3u2/fPvXu3Vvff/+93XOZk5OjHTt2aNiwYZowYUK+gZO8tm/frh49emjBggX5BpAkKSEhQYsXL1b37t31559/Ol33Na+++qpN8EG6Gqw6ceKEy+Pllp2drQ8++EB9+vTRqlWr8g0gXft57777ru68885CvY+SEBsbq8GDB2vixIn5BpAkKSsrSz/99JMGDBigJUuWOBzTYrFoxowZeuCBB7R27VqH90NsbKxmzJihu+++2xCsKA0sFotGjhypuXPn2g0gSVfvzUWLFqlv375O179z50716dNHM2fOzDeAdO3n//TTT+rbt6/efPNNu2EWR649t59++qndAJIkpaWladWqVbrnnnu0a9cul8Z3lavP4V9//aXevXtr2rRp+QZepKufhStWrNBdd92l7777zul6li5dqnvuuUeff/55vgEk6ersYLNmzdLAgQMdfk5JUnJyskaOHKkRI0Zox44d+V6zzMxM/f7777r//vs1c+ZMl69tbr169VLlypWt7fw+p/Pz1VdfGdr5BWxL8npYLBaNHz9eTz/9dL6fQxkZGfrmm2/Uu3dvh59VAAAAACoGZkICAAAAAABu88svv2jJkiXKysqSJAUFBally5YKCQnRhQsXtHv3bkMw4vDhw5owYYL+9a9/eapkg6lTp2r16tXWdsOGDdWgQQNlZ2dr9+7dunTpknXfli1btHjxYoWEhGjevHnW7Y0bN1bDhg2VmpqqPXv2KCEhwbovNjZWr7/+uubPn19gLYmJiXr88cetx3t5eally5aKjIxUQkKCdu7cqfT0dGv/1atXKzU1VQsWLHC49Ngvv/yiMWPGGI6VpKioKDVu3Fi+vr6KjY3V/v37lZOTI+lq4GP48OH65z//qTvvvLPA2iVp/fr1Nl+y53bfffc5NU5+pk2bpk8++cSwzWQyqVmzZqpTp44yMjJ09OhRnT592ro/Pj5ew4cP16xZs9SrV68i/fyiOH36tAYPHmwTrAgKClKrVq0UEhKiS5cuadeuXdbrlJmZqTfeeEN+fn566KGHbMbMysrS2LFjtX79esN2b29vtWjRQpGRkbpy5YoOHjyoCxcuGGp58MEH9cEHH6hTp04l8G5d9/rrr2vDhg3Wdnh4uFq0aCFJOnDggM6dO2fdd+rUKT322GP67LPPVL9+/XzH3Lp1qx5//HGb+75GjRpq1qyZKleurHPnzmnv3r3Wz6+cnBwtXrxYJ0+e1IIFC5xaGiw2NlYjRozQxYsXJV2dRaZFixaKiIhQUlKS9u/fb/hMSEpK0siRI7Vu3TqXZnRylqvP4e7duzV8+HAlJiYatoeHh6t58+by9/dXXFyc9uzZYw3cpKam6vnnn1d8fLwefvhhh/XMmzdPixYtstnetGlTRUVFycvLSwcPHtSpU6es+w4ePKihQ4dq5cqVds9RQkKChg4dahNGCwwMtD5PiYmJ2rNnjzX0lJOTo5iYGJ07d07z5s0r1HKNgYGB6tmzp1atWiVJunTpkv73f/9XXbt2LfDYpKQkw7PasmVLXXfddTb9SvJ6ZGdna8yYMfr5558N2ytXrqw2bdooODhY586d0549e5SdnS2z2awnnnjC6bArAAAAgPKJEBIAAAAAAHCbxYsXS5KCg4M1fvx49evXz7DU06VLlzRz5kxD0Of333/Xtm3b1KFDB7fXm1tWVpaWL18u6eoXwq+99ppat25t3W+xWDRr1iwtW7bMuu2DDz6wfiHbqlUrTZkyRddff711f3p6uubPn6+PPvrIum3dunWKjY1V7dq1HdaTe4aQ2267Ta+88orq1Klj2P/OO+8oJibGGhZat26dPvvsMw0ePNjumKdOndL48eMNQYx27dpp8uTJhvcqSefPn9fcuXOtAYaMjAxNnDhRX375perVq+ewdunqElvXdO7cWS1bttTly5e1efNmhYSEOAyMFGTx4sU2AaTevXvr+eefV61atQzbt23bpmnTplmX2svIyNCkSZPUsGFDw1Jbs2fPts6mtGzZMsN1fuutt9SmTRtruyhhkezsbI0bN84QQAoJCbEui5V72an4+HjNmjXLGnKQpJkzZ+rmm29WVFSUYdw33njDEGowmUx6+OGHNWrUKMMSgDk5OdqwYYOmT59unVXlypUrGjt2rL788stiXRqsMBISErRy5UpJV8/Lyy+/rHvuuccaAMrJydGaNWs0depU66xiZrNZzz//vL744gt5e3vbjHnixAmNGjXKcN/Xr19fkydP1q233moIoJjNZi1cuFCffvqp9bn68ccf9fbbb+vZZ58tsP4vv/xS0tXQYHR0tJ544gmFhoZa96enp2vZsmWaO3euNexkNpu1bNkyPfXUUy6dK2e48hwmJiZq7NixhsBLo0aN9NJLL+mmm24yjHttJqolS5YoOztbOTk5mjFjhq6//nq1b9/ebi3r16+3CSDdeeedmjhxos1nyi+//KKXX37ZGpg7fvy4Zs2apSlTptiM++KLLxoCSFWqVNGECRPUv39/w/NksVj05Zdfavbs2bp8+bIkac2aNWrRooWeeOIJuzUXZMCAAYbnc/Xq1U6FkNasWWO4H+3NglTS12Pp0qWGAJK3t7dGjRql4cOHG5ZJPXv2rHVJ0NxBXAAAAAAVE8uxAQAAAAAAt6pataq++OILDRo0yBBAkqSwsDC99dZb6tatm2H72rVr3VmiQ23atNGyZctsQjl+fn6aPHmymjRpYt2WlpamrKwstWzZUh9//LEhgCRJlSpV0oQJE3T77bdbt2VnZ2vz5s1O1zNgwAAtWrTIEECSrgZhXnjhBb3yyiuG7XPmzMl3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+5f3zqhdu7YiIyOt7X379unYsWNOH7969WrDl+25z4k7tG/f3tD+8ccfnT5206ZNysrKUmxsrDZv3iwfn6sToLdu3dowO9KGDRuUmJjo9Lhff/21oW3vnLj7ObwW3ChITk6O1qxZY237+vrqhhtuMPTJ+35cWdbKbDbrt99+s7a9vb1trmF50alTJ0PblfNksVjUvXt3tWvXTvfee69Gjhxps8RXu3btrK/T09MNswI5ci2Ak5ycrIMHD+rUqVPWmazy1uzKZ5okPf/882rdurW6d++uxx9/XDt27HDpeHvyLrN27RnPXVujRo3Utm1bh+OU5PXw8/MzPBcXLlzQ5s2bnRp78+bNht81AAAAACoeQkgAAAAAAKDMCgsLM7S3b99e4DFJSUk2wYqyatGiRQX2ycrK0sKFCw3bBgwYYNPv3nvvNbQ//PBDp79Mfu+992SxWJSUlKQDBw4oLS3NpSWtilPe9/HPf/7TqeOSkpK0ePFiw7aePXsWV1lOadSokWH5tX379mnTpk0FHpeenq6vvvrK2q5cubI1pODv728IPaSnp+u9995zqp7Y2FitWLHCsM3eOSnMc3jq1Cn98ssvTtWR1+rVq3X+/PkC+3399deGpaS6du1qsxxX7969DTM5LV++3OnlwN59913D7DU333yzgoKCnDq2rOndu7eh/fnnn9ssdZefTz/9VBcvXtSVK1d0+PBhnT171maGsXvuucfQzvss5uerr74yzNR12223WV937txZ4eHh1va+ffv0/fffOzXu3r17tX79emVkZOjkyZPatGmT6tWr59SxBRk4cKD19ZkzZ7R+/XpDwMne53NeJX09+vTpY2gvXLjQqdmQPvzwQ6dqAAAAAFB+EUICAAAAAABlVrNmzQyzvPz555/avXt3vv0zMjL02muv6eLFi+4or8StXbtWn3zyicM+b775puGcNGzY0PBF/TVdu3ZVkyZNrO24uDiNGzfO4bI9krR+/XqbGh577LGCiy8hDz/8sOGe+OGHH/TBBx84PMZisWj8+PGG8Em9evXUvXv3EqszP3nP3UsvvVRg4GbOnDmG2vv06WMIwzz++OOG/v/+978LnDklMTFRY8eONSyz17lzZ7Vu3dqmb95t3333nWJjY/MdOyUlRZMnT3Z6+cS8kpOTNX78eIfLvh08eFBvvPGGYduIESNs+jVq1Mjw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TbMG7LKysrRr1y7Ds5DbXXfdpTfffFN+fn5299euXVv/+c9/9MwzzxjCMRaLRdu2bcu3lrCwMM2ZM0ddunRxWHNh1KxZU//zP/9jOGdhYWF2l8p0xB3XIyAgQG+99Zb1emRmZmr79u02ff39/TV37lytWbOGEBIAAABQgRFCAgAAAAB4THgVf22c5Nkv+8uT8Cr+ni7BY/r27asWLVpozpw5+u2332xmKpGkBg0aaMSIEerfv78HKiwZt956q1auXKl//OMfdmd18vX11R133KHx48crKirK6XG7deumH3/8UYsXL9aqVascho/atGmjoUOHqnfv3oV6DyXFZDJp9OjR6tWrlxYuXKiff/5ZqampdvtGRERo4MCBevTRR1W1alU3V2pf9erVtXz5cn399df66KOPrIGbvPz9/dWvXz899dRTioiIcDimr6+vpkyZogEDBuidd97RH3/8YZhJKbd69erpoYce0kMPPSR/f+c+W5588kl16tRJc+fO1datW22WMpOuhh/GjBnjctgit7CwMP3nP//R22+/rc8//9xmRq5rP2fUqFG68847nR63bdu2Wrt2rZYtW6bPPvvMZlaca/z8/HT77bdrxIgRhqW+Koq2bdvqhx9+0Mcff6zly5fr9OnT+fZt0qSJBg8erEGDBsnb29up8R988EHddNNNWrhwoX744Qe711eSmjdvrhEjRqhXr14Fjlm9enV99tln+u9//6t//etf2rt3r93781rffv36acSIEYblzorbwIEDDUGhPn36FGoJyJK+Ho8++qi6dOmiefPmacOGDTZLvUlSp06d9Prrr6tx48Zas2aNy+8BAAAAQPlhysnvf20BZdzWrVs1ZMgQa/uTTz5Rx44dPVgRAKC4nU1MVZcZ6+3u2zipmyKrOv5rZ09xVLdUumsHAOnqrBaZmZny8fFRkyZNPF0OYCMhIUGbN2/WuXPnlJaWpvDwcDVp0kQtWrTwdGkl6uTJk9qxY4fOnz+vgIAARUZG6oYbblCVKlWKPPahQ4d06NAhmc1mpaamKjAwUJGRkWrdunWBwZfS4tqsJ6dPn1Z8fLykq2GD5s2bq1mzZjKZTB6u0LHTp09r9+7dunjxoq5cuaLg4GA1aNBA7dq1czoklFdKSoq2bdumc+fOKT4+Xt7e3goPD1eLFi0cLr3mjLi4OG3dulVxcXHKzMxU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4MGDOnDggBISEiRJoaGhioiIUPv27RUYGFik8f/++2/t379fFy9eVHp6uqpVq6aoqCi1b9++yJ8hf//9t3bt2qULFy7I19dXNWvWVOfOnVWtWrUijQsAAAAA5RkhJAAAAAAAUGJOnz6tO+64w9peunSpbrjhBv3111+aNWuWfvvtN2VmZtocFxoaqkceeUTDhg2Tv79/vuOvWrVKkyZNsrZnzJih/v37u1xXv379NHPmTIfje3t7a//+/ZKkb7/9VosWLdKRI0dsjgkMDNT999+v559/3hCC2LJli+bMmaMdO3bYHOPl5aVevXrppZdecvkL7gsXLuiNN97QDz/8YHMuTSaT2rZtq2eeeUY333yzS+NeuXJFixcv1hdffKHz58/b7RMSEqL+/fvrqaeeUnBwsMPxNm3apKFDh1rbP/30k2rUqKEXXnhBa9asMfStUaOGJkyYoD59+rhUsz3Hjh3TRx99pO+//15paWl2+9SoUUP333+/hg0blm+A7JFHHtHmzZvt7sv9vqT87ydXZWdn65tvvtGSJUu0b98+u328vb112223acyYMWrWrJlT4+7evVsfffSR1q9fb7O03DW1a9fW0KFDNXjw4ALDPAsWLNDChQut7WvPeUHy3hPPPPOMRo8e7XD8kJAQbdq0SdnZ2frwww8VExOj+Ph4m2NCQkL04IMP6oknnnBpubwrV67o888/17JlyxQbG2u3j5+fn2655Ranz3m3bt2sY117j0lJSZo7d66++eYbJSUl2Rzj7++vXr16ady4cYqIiHC6/oI4e87tue6666yvO3furGXLluXb98KFC3r//ff1zTffWMNHefn6+qp9+/YaOnSo7rzzTufegK4uh7h8+XItXbpUJ0+etNsnMDBQvXr10ujRo10+fz/++KPeffddu8+cr6+vevbsqUmTJiksLMylcQEAAACgIij9f1IIAAAAAADKlS+//FJ9+/bVzz//bDeAJF2dIWn+/Pm6//77ZTab3Vxh/jIzMzVhwgQ9//zzdgNIkpSSkqJ///vfevzxx5WamipJWrRokR599FG7ASTpatjk22+/1cCBA116v/v27VPv3r31/fff2z2XOTk52rFjh4YNG6YJEybkGzjJa/v27erRo4cWLFiQbwBJkhISErR48WJ1795df/75p9N1X/Pqq6/aBJCkqwGGEydOuDxebtnZ2frggw/Up08frVq1Kt8A0rWf9+677+rOO+8s1PsoCbGxsRo8eLAmTpyYbwBJkrKysvTTTz9pwIABWrJkicMxLRaLZsyYoQceeEBr1651eD/ExsZqxowZuvvuu3Xo0KFCv4+SYLFYNHLkSM2dO9duAEm6em8uWrRIffv2dbr+nTt3qk+fPpo5c2a+AaRrP/+nn35S37599eabbyo7O9ul+q89t59++qndAJIkpaWladWqVbrnnnu0a9cul8b3tF27dql3795atmxZvgEk6WqYaNOmTXr66ac1evRoWSyWAsf+66+/1Lt3b02bNi3fAJJ09XN4xYoVuuuuu/Tdd985VbfFYtH48eP19NNP5/vMZWRk6JtvvlHv3r0dPpcAAAAAUFExExIAAAAAAHCbX375RUuWLFFWVpYkKSgoSC1btlRISIguXLig3bt3G4IRhw8f1oQJE/Svf/3LUyUbTJ06VatXr7a2GzZsqAYNGig7O1u7d+/WpUuXrPu2bNmixYsXKyQkRPPmzbNub9y4sRo2bKjU1FTt2bPH8CV9bGysXn/9dc2fP7/AWhITE/X4449bj/fy8lLLli0VGRmphIQE7dy5U+np6db+q1evVmpqqhYsWOBw6bFffvlFY8aMMRwrSVFRUWrcuLF8fX0VGxur/fv3KycnR9LVwMfw4cP1z3/+0+kZTdavX6+vvvoq3/333XefU+PkZ9q0afrkk08M20wmk5o1a6Y6deooIyNDR48e1enTp6374+PjNXz4cM2aNUu9evUq0s8vitOnT2vw4ME2AbCgoCC1atVKISEhunTpknbt2mW9TpmZmXrjjTfk5+enhx56yGbMrKwsjR07VuvXrzds9/b2VosWLRQZGakrV67o4MGDunDhgqGWBx98UB988IE6depUAu/Wda+//ro2bNhgbYeHh6tFixaSpAMHDujcuXPWfadOndJjjz2mzz77TPXr1893zK1bt+rxxx+3ue9r1KihZs2aqXLlyjp37pz27t1r/fzKycnR4sWLdfLkSS1YsMCppQljY2M1YsQIXbx4UdLVmXVatGihiIgIJSUlaf/+/YbPhKSkJI0cOVLr1q1zaUYnT4mLi9OIESMM78HX11fNmzdXzZo1ZTKZdPbsWR09elRXrlyx9vnhhx80ffp0/eMf/8h37N27d2v48OFKTEw0bA8PD1fz5s3l7++v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2LCtZ8+exVWWUxo1amRYfm3fvn3atGlTgcelp6frq6++srYrV65sDW74+/urR48ehr7vvfeeU/XExsZqxYoVhm32zklhnsNTp07pl19+caqOvFavXu1UwOXrr782LK/VtWtXhYSEGPr07t3bMJPT8uXLdfbsWafqePfdd5WRkWFt33zzzQoKCnLqWE+pXr26ob1jx44CZ/7JzMzU8uXLCxw7IyND+/bts848lDsA5kjemYryLrXXu3dvQ/vzzz+3WWYvP59++qkuXryoK1eu6PDhwzp79qzN7GZ9+vQxtBcuXOjUbEgffvihUzUAAAAAQEVCCAkAAAAAAJRZzZo1M8zy8ueff2r37t359s/IyNBrr72mixcvuqO8Erd27Vp98sknDvu8+eabhnPSsGFD3XbbbTb9unbtqiZNmljbcXFxGjdunMOljCRp/fr1NjU89thjBRdfQh5++GHDPfHDDz/ogw8+cHiMxWLR+PHjDeGTevXqqXv37iVWZ37ynruXXnqpwMDNnDlzDLX36dPHEIZ5/PHHDf3//e9/FzibTGJiosaOHWtYZq9z585q3bq1Td+827777jvFxsbmO3ZKSoomT57s9FJgeSUnJ2v8+PEOl307ePCg3njjDcO2ESNG2PRr1KiR4XlISkrS2LFjdfnyZYc1fPXVV/r4448N24YNG+ZE9Z4VERGh8PBwa/vEiRP673//m2//nJwczZkzR4cPHy5w7LvuussQ6HrvvfcMITB7srKybM5j3pmPmjZtaliyLTU1VU8//bQuXbrkcOzdu3dr3rx5hm32Ppvuvvtu1atXz9revHlzgeHFf/3rX/r1118d9gEAAACAiogQEgAAAAAAKLMCAwN10003Wds5OTl68skn7X45vH37dg0dOlTfffedJHlspp7iNmXKFL355ps2S2ydP39e48aN05IlS6zbfHx8NHPmTENQ4BqTyaTp06cbAjwbN27UAw88oN9//91mZpCUlBQtWrRIY8aMMSy91rNnT3Xu3Lm43p7LIiIiNH78eMO2OXPmaPz48Tpz5oxN/507d2rw4MGGWXm8vb01ZcoU65Jm7tSnTx/D+Tt16pQefPBB/fjjjzZL3F28eFGTJ082XOOQkBCNHj3a0K9ly5YaOnSotZ2Tk6MJEyZo+vTpMpvNhr45OTn69ddf9cADD2jPnj3W7ZUrV9brr79ut+b69esbAmypqamKjo62WcIr99jXlrwq7HO4efNmPfzwwzZLEmZmZmrlypV65JFHDM/EwIED1aZNG7tjvfTSSwoODra2d+3apfvvv1+//vqrzX1vNps1ffp0vfjii4Z9AwYMsFnqrbTKG6578cUXtXr1apv769ChQ3rqqaesM4QVdK3q169vGDshIUGDBw+2e+9K0unTpzVq1Cht3brVuq1x48a6+eabbfq+8sorhmt06NAhDRw4UN9//72ysrIMfS0Wi5YvX65HH33UEHRr06aNzaxH0tVl+l555RXD5+KiRYs0YcIEm8BqYmKipk6dqlmzZjk6FQAAAABQYbn//0kBAAAAAAAoRqNHj9avv/5q/ZLbbDbriSeeUN26ddWoUSNlZ2fr77//1smTJ63H9OjRQ4mJiU4tdVVatW/fXocOHVJKSooWL16sTz/9VK1atVK1atUUFxen3bt3G76cN5lMmjx5cr5BDOnql/SvvfaaXn31Vev5PHLkiIYNG6YaNWqoefPmCgoK0sWLF7V3716bWZKaNm2q6dOnl8wbdsFjjz2mAwcOGJYo++abb/Ttt9+qefPmqlOnjjIyMnTs2DHDfSFdDVq8/vrruvHGG91c9f///NmzZ+uhhx6yziZ05swZPf3009ZrEBgYqHPnzmnv3r2G5cB8fX311ltv2SyPJkkTJ07UkSNHtHHjRklXA0FLly7VJ598olatWikiIkJpaWk6ePCgzcxLfn5+mjdvnho1apRv3ePGjdPTTz9tbZ84cUKDBg1SkyZNVLduXaWnp+vo0aM6d+6ctc+jjz6qn3/+2eYaFCQoKEjJycnau3ev+vXrp6ZNm6p+/fpKS0vT3r17bYJV7dq108svv5zveFFRUZo9e7ZGjx6t9PR0SdLx48f1xBNPKDw8XM2aNVNAQIDi4uK0Z88eZWZmGo7v0qVLvgGt0ujJJ5/UqlWrrDNJpaWlacKECZozZ44aN24sPz8/nTx5UkePHrUe065dO9WuXVvffvutw7Fffvllbd261XoNzp8/r6efflrVqlXT9ddfr+DgYGVkZOjkyZM6fPiwIchVpUoVzZ49227Yyd41OnPmjJ599lmFhISoZcuWCg4OVmJiovbs2WMzk1VERITefvvtfINUt9xyi8aNG2eYOWn16tX6/vvv1bp1a4WHh8tsNmvnzp2yWCySrt6HTZo00Y4dOxyeEwAAAACoSAghAQAAAACAMq1ly5aaMWOGJk+ebAjdnDx50m64oXv37po9e7aefPJJd5ZZ7Bo2bKinnnpKY8aMUWpqqtLS0rRlyxa7fStVqqQpU6aob9++BY57//33KywsTBMnTlRSUpJ1+4ULF3ThwoV8j7vppps0b948wzJgnjRz5kzVqVNH7777rjVQlZOTo/3799vMnnNNWFiYpk2bpm7durmzVBsRERH64osvNGrUKO3atcu63dE1CAkJ0axZs3Trrbfa3e/r66sPP/xQU6dO1eeff27dnpWVZTNjUW5RUVF666231K5dO4c133nnnXruuec0d+5cw/YjR47oyJEjNv0feughvfjii/r5558djmvP1KlT9c4771hDMocPH853ubC77rpLb7zxhgICAhyO2bVrVy1dulSjR49WXFycdXtcXJyhnZvJZNKQIUP04osvGmYQK+0iIiL03nvv6amnnjIsaXfu3DlDSOyaDh066J133tHs2bOdGnvJkiUaMWKEYYlAs9ms33//Pd/jatasqTlz5qh58+b59snvGiUkJDgcu0WLFnrnnXcUGRnpsPaRI0cqICBAb731ljXcl5mZqe3bt9v09ff319y5c7VmzRpCSAAAAACQCyEkAAAAAIDnBNWUnrMfBkAhBNX0dAUe07dvX7Vo0UJz5szRb7/9ZjNTiSQ1aNBAI0aMUP/+/T1QYcm49dZbtXLlSv3jH/+wO6uTr6+v7rjjDo0fP15RUVFOj9utWzf9+OOPWrx4sVatWuUwfNSmTRsNHTpUvXv3LtR7KCkmk0mjR49Wr169tHDhQv3888+GwEVuERERGjhwoB599FFVrVrVzZXaV716dS1fvlxff/21PvroI8OsNLn5+/urX79+euqppxQREeFwTF9fX02ZMkUDBgzQO++8oz/++MMwk1Ju9erV00MPPaSHHnpI/v7+TtX85JNPqlOnTpo7d662bt1qs5SZdDUQMmbMGN12221OjWlPWFiY/vOf/+jtt9/W559/bjMj17WfM2rUKN15551Oj9u2bVutXbtWy5Yt02effWYI0eTm5+en22+/XSNGjFDLli0L/T48qUuXLvr+++81b948rV271jq7UG6RkZEaOnSoHnvsMZeWzWvatKm+/fZbffjhh/ryyy9tZtbKrXbt2rrvvvs0YsQIVa5cucCx27Zt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1a9+FatXr44tttgiLrzwwkKXBwAVoboqEcMHblboMgAAAAAAAKggJRdCampqissuuyz++Mc/Jm+bNWtWxiGk5557LpYvXx6JRCLa29vjoYceioceeiiOOuqouOSSS2LzzTfPdekV4e67746vfe1rKbfttddecdlll8X2229foKoAoMK0tUY0N3a8rnZYRFV1fusBAAAAAACg7JVUCOmFF16IM888M+bPnx/t7e0REZFIJOKxxx7L+Fj/+Mc/kj+vCyJFRPz+97+Pp556Kn72s5/FNttsk5O6K0lj48ZfeL744otxyy23xDnnnGM6NoBuam1rj4XLVna6fmj/mqiuSuSxIopac2PE1F07Xnfe7IgBI/NbDwAAAAAAAGWvZEJIr7zySpx88smxdOnSiFgbHIpYO/3XnDlzorm5OWpra7t8vEQiEYMHD4633357o+O9/vrr8bnPfS5uvfXWGDnSl3SZ2HvvveP666+P/v37x2uvvRa//OUv48knn4xf/vKXMWvWrLjhhhti8ODBhS4ToOQsXLYy9p8yo9P1MyePN/0WAAAAAAAAUDBVhS6gK5YtWxZf+MIXYunSpZFIJJIjF7W3t8fBBx8cU6dOjc02y+yL1y984Qvx97//PW677bY44ogjorp67bQk647f2NgYp512WrS0tPTEXSpbe++9d3zwgx+MMWPGxFFHHRW//OUv49Of/nRErB0R6fLLLy9whQAAAAAAAAAA5FpJjIQ0derUePPNN1NGKxo7dmxccsklseuunUw10kV77rln7LnnnvHCCy/EN77xjZg9e3byPK+++mr85Cc/ia9+9atZ34dKVVVVFRdffHH83//9XzQ2NsYf//jH+Pa3v51xaAyA4pFuajjTwvWMof1rYubk8Z2uAwAAAAAAgEIr+hDSq6++GnfccUdy9KNEIhETJ06MCy+8MDl6US7svPPOcfvtt8eXv/zleOCBB5Lna2hoiJNOOimGDh2as3NVmj59+sRBBx0Ud9xxR6xevTpeffXV2G233QpdFgDdlG5qONPC9YzqqoTHFQAAAAAAgKJW9NOxTZ8+Pdra2iJi7VRpRxxxRFxyySU5DSCt06dPn/jJT36SMrpSa2tr3H777Tk/VzlYunRpPPfcczFjRsdfRK9viy22SP68evXqHqwKAMpQW2vE0nkd/9fWWujqAIpaa1t7zH/n3Q7/a21rL3R5AAAAAABlo+hHQrr77ruToxINGjQovvWtb/Xo+Xr37h0/+MEP4qijjoq2trZob2+Pu+++O7785S/36HlL0UUXXRT33ntvREQ89NBDaUeLmjt3bvLnYcOG9XhtAHRduunVIkyxVhSaGyOmdjIF7XmzIwaMzG89ACXECH4AAAAAAPlR1CGkefPmxaJFiyKRSEQikYhPf/rT0b9//x4/7/bbbx8f+chH4s9//nNERPznP/+Jt956K4YMGdLj5y4le++9dzKEdOedd8YZZ5zR4XaLFi2KBx54ICIitttuOyEkgP9fuvBPPoM/6b6cjfAFLeSa4B8AAAAAAFCOijqENHv27IiIaG9vj0QiER/+8Ifzdu4jjzwyGUKKiHj22Wdj/PjxeTt/KfjEJz4R06ZNi+bm5rj22mvjkEMOiZ133jllm+XLl8e5554bK1asiIiI0047rRClAhSlnhyZoVgCTsDGBP8AAAAAAIByVNQhpMWLFyd/TiQSseuunUxD0gPGjRuXPG9ExNtvv523c5eKLbfcMi688MKYPHlyLF++PI4//vg4+eST4/3vf3/0798/nnvuubjxxhuTU7F9/OMfj6OPPrqwRQNUCFPPAAAAAAAAAPlU1CGkd955J/nz5ptvHr165a/cLbbYIvr06ROrV6/eqBb+69hjj42VK1fG9773vWhpaYnrrrsurrvuuo22O/HEE+PCCy9MhroAAAAAAAAAACgfRR1CqqqqKuj5+/XrF0uWLIlEIhFtbW0FraWtrS2OPvromDNnTowcOTJmzOh8Co90lixZEnfeeWc89NBD8dJLL8U777wTtbW1MWzYsBg7dmwce+yxMWbMmIyOOXHixPjgBz8YN998c/z973+PN998MyIihg4dGvvss0+ceOKJsccee3SrXgAAAAAAAAAAil9Rh5D69++f/Hn58uXR3t6e15F0mpubk+erra3N23k7cu2118acOXOyOsb06dNjypQpsXz58pTbm5qaoqmpKf71r3/FbbfdFh/+8Ifju9/9bgwaNKjLx956663joosuyqo+AAAAAAAAAABKU2GHGtqE4cOHJ39ub2+PV199NW/nfv3112PNmjXJ5S222CJv597Qgw8+GNOmTcvqGD/+8Y/joosu2iiA1JH77rsvjjnmmFiwYEFW5wQAAAAAAAAAoDIUdQhpl112iYhIjkb0xBNP5O3cjz32WESsDT9FRGy33XZ5O/f6Zs6cGeecc05KICpTd911V1xzzTUpt330ox+Nq666Ku6+++645ZZb4otf/GIMHDgwuX7+/Plx1llnRUtLS7fPCwAAAAAAAABAZSjq6diGDBkSo0ePjrlz50ZExG9/+9s4/vjj83Lu3/72t8mfe/XqFTvssENezru+O++8M7797W/HqlWrun2MxYsXx2WXXZZcrqqqih/+8Ifx8Y9/PGW7ffbZJz796U/H6aefHi+99FJERDzzzDNx0003xec///lunx8AKsXQ/jUxc/L4TtcBkDutbe2xcNnKDtcN7V8T1VX5m8YbAAAAAIC1ijqEFBHxkY98JH7xi19ERMSTTz4Zjz32WOy77749es5HH300nnjiieQITO9///ujV6/8PVSrVq2KSy+9NKZPn571sa677rpYtmxZcvnss8/eKIC0zsiRI+PnP/95HHvssdHU1BQREddee22ccMIJUVtbm3UtAFDOqqsSMXzgZoUuA6AiLFy2MvafMqPDdTMnj9ePAQAAAAAKoKinY4uIOO644yKRSEQikYj29vb45je/Gc3NzT12vhUrVsS3vvWt5PkiIo444ogeO9+GHnjggTj66KM3CiBVV1dnfKyWlpa48847k8uDBw/e5KhGI0aMiDPOOCO5vGTJkvjDH/6Q8bkBoOK0tUYsndfxf22tha4OAAAAAAAAelTRj4S03XbbxaGHHhp//etfI5FIxGuvvRZf/vKX4+qrr46+ffvm9FwtLS1x3nnnxWuvvZYcBWnYsGFx5JFH5vQ8HZk7d25cfPHFMXPmzJTb+/TpE5deemlMmzYt5s2bl9ExZ86cGUuWLEkuH3HEEdGnT59N7nfMMcfEFVdcEWvWrImIiHvvvTcmTJiQ0blz5c0334w333yzW/vOmTMnx9UAUGyKagq05saIqbt2vO682REDRua3HgCAEmB6RQAAAIDyUfQhpIiIr33ta/Hwww/HypUro729PWbOnBkTJ06M//3f/41Ro0bl5BxvvPFGnH/++fH0008nR0FKJBLxla98pUvBnWz985//3CiAtNNOO8WUKVNi9913j2nTpmV8zEceeSRl+cADD+zSfgMGDIgxY8bEE088ERER//jHP6K5ubkgU7LdeeedceWVV+b9vACUBlOgAQCUNtMrAgAAAJSPkgghjR49Os4999z43ve+lwwIPf/883HkkUfGZz7zmTjxxBNjq6226tax582bFzfddFP86le/Soac1k3/dsQRR8TRRx+d2zvTBf369YtTTz01TjvttKwCUM8//3zK8h577NHlfXffffdkCGnNmjXx3HPPxX777dftWoD8c0UxFaGtde0IRB2pHRZRlfl0pgAAXZHu9XaE19wAAAAAVJ6SCCFFRJx88snx6quvxu23354MIq1atSquv/76aGhoiD322CMOOOCAGDNmTLz3ve+Nurq65JRq66xZsybmz58fL7/8cjz77LPx0EMPxXPPPRcREe3t7RERyWOPGzcuvvvd7+b1PtbU1MSxxx4bZ555ZgwZMiTr473yyivJnwcNGhRbbrlll/fdZpttNjqWEBKUFlcUUxFMgQYAeSHgvrF0r7cjvOYGAAAAoPKUTAgpIuKb3/xmVFdXx6233poMGLW3t0d7e3s888wz8cwzzyS3ra6ujgEDBkRNTU2sWbMmVq1aFcuWLUuGjdbtu876xzv00EPjRz/6UfTt2zdP9yxi3333jQceeCAGDRqUk+OtXLkyFi9enFwePnx4RvvX1dWlLM+bNy8ndWXquOOOi/33379b+86ZMye+853v5LgiAACAyiPgTjEw+hQAAABAcSupEFIikYiLL744dtttt5gyZUosW7YsZbSj9UNFa9asSQnhdHa89ffdfPPN4/zzz48JEybkvvhN6O50cp1ZtGhRyvLgwYMz2n/DUZOampqyrqk7RowYESNGjCjIuaHY+MAdAACoZEafAgAAAChuJRVCWufYY4+Ngw8+OH784x/H7373u2hpaYmI2Gj6tU1ZF1rq379/TJw4Merr62OLLbbIdbkFsXTp0pTl2trajPbffPPNU5aXLVuWdU1AdnzgTiUY2r8mZk4en3Y9AEBXmUYOAAAAAPKnJENIEWtH6rn00kvj3HPPjV//+tdx//33xzPPPBOtra1d2n/QoEGx7777xsc+9rEYP3589OnTp4crzq91wax1amoy+9J2w8djw+MBQE+orkoI0wEAOWMaOQAAAADIn5INIa2z5ZZbxmmnnRannXZaNDc3xwsvvBCvvvpqvPnmm7F8+fJ49913o7q6Ovr16xeDBw+OrbfeOrbffvvYbrvtCl16j1q9enXKcnV1dUb79+qV+tRYs2ZN1jUBwCa1tUY0N3a+vnZYRFVm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uP3222PatGkxaNCgAlUJUNp6dLQiV6ACAAAAAAAAWRJCIiuPPPJInH/++dHa2ho1NTUxceLEOPDAA6O2tjb+/e9/x6233hpPP/10PPbYY/GlL30pbr755qiu9kU2dIcpsypbj45WlOEVqOmei56HAAAAAAAAUJmEkOi29vb2+M53vpMMIN10003xvve9L7l+zJgxceSRR8b5558f99xzTzz++OPxm9/8Jo4//vgCVg2ly5RZFa6IRivyXAQAAMqJi34AAAAgN4SQ6LYnnngi/v3vf0dExGc/+9mUANI61dXV8a1vfStmzJgRK1asiN/97ndCSNBdRRRCoQAyHK2oR6V7LnoeAgAAJcaFFgAAAJAbQkh02+OPP578+cMf/nCn2/Xv3z923333eOyxx2LOnDn5KA3KUzGFUKhs6Z6LnocAAECpcdFP0TMtOAAAQGkQQqLbxowZE6effnosXLgwRo0alXbbtra2iIhYtWpVPkoDAAAAgK5x0U/RM1oVAABAaRBCotv222+/2G+//Ta53fLly+P555+PiIgRI0b0dFkAAAAAQDkxLTgAAEBJEEKix91yyy3x7rvvRkTEAQccUOBqAAAAAICSYlpwAACAklBV6AIoby+88EJcddVVERHRq1ev+MxnPlPgigAAAAAAAAAAyDUhJHrM/Pnz44wzzoiVK1dGRER9fX1ss802hS0KAAAAAAAAAICcMx0bPWLevHlRX18fb775ZkREjBs3Ls4555zCFgUVZmj/mpg5eXyn6wAAAAAAAAAgV4SQyLmXX345Tj311GhsbIyIiF122SWuuuqq6NXL0w3yqboqEcMHblboMgAAADrl4gkAAACA8iEVQk49+uijcfbZZ8fSpUsjImK33XaL66+/PgYOHFjgyqACtbVGNDd2vK52WERVdX7rAQAA2ICLJwAAAADKhxASOXPXXXfFRRddFKtXr46IiH333TeuvvrqqK2tLXBlULx69Krf5saIqbt2vO682REDRmZ3fAAAgGy5eAJSGB0MAACAUiaERE7ccMMN8f3vfz/a29sjIuLwww+PH/7wh9GnT58CVwbFzVW/AAAUgi+5KRounoAUPicAAACglAkhkbWbbroppkyZklz+7Gc/GxdccEFUVVUVsCooEa76BQCgAHzJ3THhLKAnZNRbfE4AAABACRNCIisPPfRQfO9730sun3vu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cNY15VJ9fX3U19en3WbWrFkxadKkPFUEAEDFKpJRPzINZ0ApyjhUVCT/PgEAAACgEgghlalBgwZF3759Y9WqVRERsWjRooz233D797znPTmrDQAAykoGo3705NRQRnyhIqQLFUVsHCwyKk+HTFMHAAAAQE8QQipTiUQiRo0aFS+//HJERMybNy/a29sjkUh0af+5c+emLG+33XY5rxEAACpNjwaFMg1nQClKFyqKqOhgUSaEFgEAAADoCUJIZWznnXdOhpBWrlwZc+fOjdGjR3dp35deeilleccdd8x5fQAAlciUWflXVI95T04NJZwBdJVp6gAAAADoAUJIZWyvvfaKe+65J7n8+OOPdzmE9MQTTyR/HjJkSGy99dY5rw8AoBIZfSL/iuoxNzUUUAz0IgAAAAB6gBBSGfvQhz6UsnzvvffGMcccs8n9nnrqqViwYEFy+cADD8x5bQAAFSvDKbPSjeJj1KQuMk0ZAAAAAAD0OCGkMjZq1KjYc88948knn4yIiAcffDD+9a9/xS677JJ2v2uuuSZl+bjjjuuxGgEAKk6GU2YV1Sg+pco0ZQAAAAAA0OOEkMpcfX19MoTU1tYWX/nKV+KOO+6IQYMGdbj99ddfH/fff39yeezYsTFu3Li81JqJhoaGaGhoSLtNS0tLnqoBAOhB6UbxKaMRfIz4BAAAAAAApU0Iqcwddthhsc8++8Q///nPiIh4/fXXY8KECTFlypTYe++9k9s1NzfHT3/607j++uuTt1VXV8fkyZPzXnNXNDc3p0wZBwBQttKN4lNGI/gY8QkAAAAAAEqbEFKZSyQSccUVV8TEiRNj/vz5EbE2iDRx4sTYYYcdYtttt43m5uZ4+umnY8WKFSn7nnvuuTF27NgCVL1ptbW1UVdXl3ablpaWaGpqylNFAABkpUJGfAIoNelGqlu3HgAAAAAihJAqwogRI+LGG2+MU089NebOnZu8/eWXX46XX355o+0TiUScffbZ8YUvfCGfZWakvr4+6uvr024za9asmDRpUp4qAgAgKxUy4hNUAtMrlhcj1QEAAADQVUJIFWLrrbeOe+65J6655pq44447YvHixR1uN27cuDj33HNj3Lhxea4QAKB0+cKdnuK5RSkSWikz6UaqizBaHQAAAABJQkglYsaMGVkfo6amJs4555w4++yz48knn4zXXnstFi9eHL16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6c9AviXa29vbC10EAAAAAAAAAABQukzHBgAAAAAAAAAAZEUICQAAAAAAAAAAyIoQEgAAAAAAAAAAkBUhJAAAAAAAAAAAICtCSAAAAAAAAAAAQFaEkAAAAAAAAAAAgKwIIQEAAAAAAAAAAFkRQgIAAAAAAAAAALLSq9AFQDl7/vnn449//GM88cQTMXfu3Fi6dGlUV1fHFltsEdtvv328//3vj09+8pMxdOjQjI/973//O6ZPnx6PPfZYzJ07N5YvXx5bbrllDB8+PA488MA4+uijY6uttsrp/fnTn/4U55xzTkRETJkyJY499thuH2vBggVx7733xowZM+I///lPvPXWW1FVVRXvec97YsyYMXH44YfHoYceGlVV+ctKtrS0xJ///Of461//Gs8991wsXrw4qqurY9iwYbHjjjvGUUcdFR/60Ieid+/eOTtnW1tbHH300TFnzpwYOXJkzJgxI2fHBjqnP3euEvtzTz4foBzpoZ2rxB761FNPxe9+97t4/PHHo7GxMZYvXx61tbWxzTbbxH777RdHH310bLvttjm+V0BH9OfOVWJ/7szy5cvjk5/8ZMydOzciIs4666w4++yzc3oOqAR6bucqqef+z//8T9x9993dqunDH/5wXHXVVd3aF+ic/ty5SurP63vhhRfiz3/+czzyyCPR2NgYixcvjn79+sWwYcNi7733jmOOOSbGjBmTw3sFJNrb29sLXQSUm//85z9x8cUXxyOPPLLJbfv06ROf+cxn4txzz40+ffpscvtVq1bFD3/4w7j55psj3T/fqqqqOP300+Oss86KXr2yzxsuXrw4PvnJT8bChQsjovsvdlpaWuLaa6+Nn/3sZ7Fq1aq02+64447xwx/+MHbeeedu1ZyJJ554Ii644IJ4/fXX0263ww47xI9+9KOc1fSzn/0spk6dGhEhhAR5oD93rhL7c08+H6Ac6aGdq8Qe2tjYGBdeeGE8/PDDabdLJBJxwgknxPnnnx/9+vXr8vGBrtOfO1eJ/XlTLrzwwvj1r3+dXBZCgszouZ2rxJ77iU98Il588cVu1SWEBLmlP3euEvtzRMSiRYvi+9//fpfCooceemhcdtllMWjQoIzOAXTMdGyQY7NmzYqjjz66Sy90Itb+8b/++uvj5JNPjmXLlqXdduXKlfHFL34xbrrpprQvdCLWjrBz9dVXx+mnnx5r1qzpcv2d1XjOOeckX+h014oVK+LUU0+NadOmbfKFTkTESy+9FBMmTIhZs2Zldd5NeeCBB+Kzn/3sJl/oRES8/PLLcfzxx3f595vOgw8+GNOmTcv6OEDX6M+dq8T+3JPPByhHemjnKrGHvvzyy3HMMcdsMoAUEdHe3h633XZbHH300Vk/1sDG9OfOVWJ/3pT77rsvJYAEZEbP7Vwl9tzVq1fHv//972xLBHJAf+5cJfbniLWjVh1zzDFdHq3ub3/7W0yYMCEWLVrU5XMAnTMSEuTQ66+/Hscff3y88847ydtqa2vj05/+dHzgAx+IYcOGRUtLS7z66qvxxz/+Me6///6UFy0HHHBA/PznP4/q6uoOj/+Nb3wj7rzzzuRy3759Y+LEiXHwwQfHlltuGY2NjfGnP/0pfve730Vra2tyu5NOOikuuuiibt2ndS907rvvvpTbM01cr1mzJurr6+Oxxx5L3tarV6845phj4uCDD45Ro0bFsmXL4pFHHombb745li5dmtxuiy22iD/+8Y8xePDgbt2HdF555ZX41Kc+FStWrEjeNmbMmJg4cWK8973vjTVr1sQzzzwTN998c7z22mspNU2fPj1Gjx7drfPOnDkzzjzzzJTzGgkJeo7+3LlK7M89/XyAcqOHdq4Se+g777wTn/jEJ2LBggXJ2wYNGhSTJk2K/fffPwYNGhSLFy+ORx55JH75y1/GkiVLktu9733vi1tuucWIcpAj+nPnKrE/b8rbb78dRx55ZCxevDjldiMhQdfouZ2r1J77wgsvxCc/+cnk8le/+tU4/PDDu1xfv379YsiQIV2/Q0CH9OfOVWp/fvPNN2PChAkpAa6BAwfGSSedFHvttVcMHTo0Ghsb489//nP89re/Tfm9jRs3Lm655ZZIJBK5u8NQgYSQIIdOP/30eOCBB5LLY8eOjSuvvLLTNxMPPvhgnHPOOSl/aC+77LI4/vjjN9r2kUceifr6+uTy4MGD44Ybboiddtppo20fffTROPPMM2P58uXJ26ZPn57xnKaLFi2Kc889N+UFyjqZvtiZNm1a/PSnP00ub7XVVnHNNdfEjjvuuNG2CxYsiM9//vMpQ9l++tOfjksvvTSj+rvixBNPjCeeeCK5fNJJJ8XkyZM3esG5cuXK+PrXvx5//vOfk7cddNBB8fOf/zzjc955553x7W9/e6PUuRAS9Bz9uXOV2J978vkA5UgP7Vwl9tANp/HZY4894mc/+1mHH0wuWLAgTjnllHj55ZeTt33lK1+JM888s1v3C0ilP3euEvvzpnzxi1+M+++/f6PbhZCga/TczlVqz/3d734X559/fnL5jjvuiLFjx+ameKDL9OfOVWp/Pumkk1IevwMOOCB+/OMfx4ABAzbadtasWfHFL34xZUSsH/7wh/GJT3wi4/sF/Jfp2CBH/vWvf6W80Bk+fHj87Gc/S3s1w0EHHRTf//73U267+uqrO9x26tSpyZ8TiURMmzatwxc6ERH77bdfyvYREf/7v/+7iXuQat3wlR290MlUY2NjXHfddcnlLbbYIm644YYOX+hERNTV1cVVV10VvXv3Tt529913R3Nzc9a1rO/BBx9MeaHzwQ9+MC688MIOE+81NTXxgx/8IPbaa69O99+UVatWxUUXXRTf+MY3ujTsJZAb+nPnKrE/9/TzAcqNHtq5SuyhCxcujN/97nfJ5f79+8fVV1/d6ZWRdXV1ceWVV6bc51tvvTXlKkOge/TnzlVif96UO+64o8MAEtA1em7nKrnnzpkzJ/lzIpGIHXbYIQeVA5nQnztXqf35z3/+c8rjt+eee8bVV1/dYQApYu3IR5dccknKbbfffnuX7w/QMSEkyJE//elPKctf/OIXY4stttjkfocffnjsueeeyeV58+bFCy+8kLLNs88+G88++2xy+ZBDDolx48alPe7BBx8chx56aHL573//e5fmqF68eHFceuml8dnPfjbeeuut5O3ZTDlzyy23pIRuLrzwwhg1alTafUaNGhUf+9jHksvvvvtuTl54re+Xv/xlyvL//M//pB1isU+fPvHNb34z5bZbb721S+d64IEH4uijj47p06en3G4qH+h5+nPnKrE/9+TzAcqRHtq5Suyhf/zjH2P16tXJ5UmTJm1yColtt902DjjggOTyokWL9E/IAf25c5XYn9N54403Ur5oO/jggzM+BlQ6Pbdzldxz1w8hjRgxImpra7tRKZAN/blzldqfr7/++uTPffv2jSuuuGKTU8J/4hOfiBEjRiSXH3/88ZyHr6DSCCFBjmz4h/iwww7r8r4f+tCHUpY3fLGz/lCDEdHl4RY3HD7y3nvvTbv9TTfdFIcddljccsstsWbNmuTt48aNi69+9atdOueG2tvb46677kou77TTTl0exvDQQw+NmpqaGD58eOy6664pw1hmq7m5OR5++OHk8nvf+97YddddN7nfzjvvHLvvvnty+f7774+WlpZOt587d2587nOfi9NPPz1effXV5O19+vSJyy+/PIYNG9bNewB0lf7csUrtzz35fIBypId2rFJ76FNPPZWyvP6Hk+lseFX4f/7zny7tB3ROf+5YpfbnzrS2tsb555+fnG5k7733js997nNdLxyICD23M5Xec9cPIXU2MgrQs/TnjlVqf37llVfi6aefTi5/6lOfitGjR2/y+IlEIsaPHx+1tbUxatSo2GOPPaKxsXGT+wGdE0KCHFk/zTx48ODYcsstu7zvhtMXvP322ynLjzzySPLn6urq2H///bt03P322y969eqVXL7vvvvSbn/DDTekzHvaq1evOP3006OhoSEGDRrUpXNu6Nlnn01Jbh933HFpU83rO/zww+Ppp5+OBx54IH7729/mdA7Wf/zjHykv6A488MAu77v+ldzLly+PmTNndrrtP//5z43W77TTTnHbbbfF0Ucf3fWCgW7TnztWqf25J58PUI700I5Vag/93//937j//vvjZz/7WfzP//xPl79sWblyZcpyVx8roHP6c8cqtT935pprroknn3wyIiL69esXl19+eVRV+TgYMqXndqySe25TU1PKfe9seiOgZ+nPHavU/rzh9MMbBsLSufjii+Pxxx+Pv/3tbzF9+nRTbEKWem16E6Arfv/738eCBQti4cKF8e6772a07/ovBiLWfjC0zurVq+PFF19MLm+33XZdHtq1pqYmdthhh2SC+1//+le0tLRscujBiLXzpF588cWx2267delcnZk1a1bK8kEHHZTV8XLl+eefT1neY489urzvhts+/fTTXbpf/fr1i1NPPTVOO+20Lv0OgNzQnztWqf25p54PUK700I5Vag+NWDvVxIgRIzKazmf9KxEj1v6+gezozx2r5P68oWeffTauvvrq5PIFF1wQo0aNijfffLPL5wbW0nM7Vsk9d8MRU4SQoDD0545Van9e/34PGTIkdtlll25UCeSCEBLkSF1dXdTV1XVr37///e8py+vPPfr666+nJIMz/cB+m222Sb7YWb16dbz++utp3xTtvPPOceaZZ8bhhx+e0Xk689xzzyV/3nzzzWObbbbJyXGz9corr6Qsb7/99l3ed8P78PLLL6fdvqamJo499tg488wzY8iQIV0+D5Ab+nPHKrU/99TzAcqVHtqxSu2h3fHggw/GM888k1zebrvtXFEIOaA/d0x/XmvlypVx/vnnx+rVqyNi7RdPEyZM6PI5gVR6bscqueeuPxVbxMbTsTU3N8fSpUtjwIABXQ4uAJnTnztWqf15/fu9/vRtQP4JIUGBPfvss/HEE08kl/v06RPjxo1LLs+bNy9l++HDh2d0/A1fgL355pudvtiZNm1azv8wv/baa8mfR40alTLk4+OPPx6/+93v4qmnnor58+fHmjVrYsiQIbHnnnvGEUcc0aPp7A2v/Mvkce3oMe3MvvvuGw888EC3h80ECkd/Lu/+nKlNPR+AVHqoHhqx9qrUb37zmym3nXvuuVkfF+g+/bky+vMVV1wRr776akREbLHFFnHZZZd1+XxA7ui55dtz1w8hVVdXx3bbbRePP/54/PrXv45HHnkkGhsbk+s333zz+MAHPhBHHnlkHH744aYmhiKgP5dff25ubk4Z3WrUqFHJn1taWuKBBx6Ie+65J+bMmRMLFiyIPn36RF1dXXzwgx+Mo48+OnbeeedM7gqwCUJIUEBtbW0bfRB08MEHx+abb55c3nAe2g3nqd2UDefAbWpq6nTbnkgGr/9ibejQoRGxNu184YUXxpNPPrnR9q+//nq8/vrrcdddd8W4cePie9/7Xmy99dY5r2v9x7Vv374ZXZHSv3//6N27d/KKwnSP6VZbbdX9IoGC0Z/Lvz9noivPB+C/9NDK7KHLli2LhQsXRlNTUzz99NPx+9//fqNpKk4//fQ47LDDMjoukDv6c2X054ceeih++ctfJpe/+c1vJh8LIH/03PLuueuHkPr37x9nnHFGPPzwwx1uu3z58vjrX/8af/3rX2O33XaLH/zgBxmN/gHklv5cnv15w+DYuvv9wAMPxLe+9a2YP39+yvp333033nnnnXjxxRfjxhtvjGOOOSYuuuiilGn5gO6rKnQBUMmmTZsWTz31VHK5qqoqzj777JRtli5dmrKc6fCtG35BuuHxelJra2u88847yeV+/frF448/Hscff3yHL3Q2NGvWrJgwYUI8/fTTOa9t/bq6MyTu+o/rsmXLclITUDz05/QqrT935fkA/Jceml659tC77rorjjjiiJg0aVJcccUVKQGkLbfcMr7//e/Heeedl3FNQO7oz+mVQ39esmRJfOMb34j29vaIiDjyyCPjiCOOyPh8QPb03PRKuee2tramTCm0ZMmSTgNIG3r++edjwoQJ8eijj2ZcF5Ab+nN6pdqfFy9enLLcr1+/uPHGG+OLX/ziRgGkDbW1tcWdd94Zn/nMZzYKoAHdYyQkKJC77rorrr766pTbJk2atNH80S0tLSnLNTU1GZ2nT58+aY/Xk5YtW5b84CsiYtGiRXHGGWfE8uXLI2LtfK8TJkyIsWPHRr9+/aKxsTHuv//+mD59erLOpqam+OIXvxh33XVXt+f27cj6j0Omj2lERO/evTs8FlD69Gf9eX1dfT4Aa+mhldtD000PtPXWW0dbW1usXr065RxA/ujPldGfv/nNb8bChQsjYu3V35dccknG5wKyp+eWd8997bXXYuXKlRvdvtdee8WJJ54Ye+65Z9TV1cXy5cvjhRdeiHvuuSfuuuuuWLNmTUSsfezOPvvs+NWvfhXbbrttxvUB3ac/l29/3jCU9NBDD8X999+fXD7ggAPiqKOOih122CGqq6vj1VdfjXvuuSfuu+++5DbPP/98fOUrX4kbbrghevUSoYBs+BcEBfCnP/0pvvGNb6Tctscee8T555+/0bYb/iGtrq7O6Fwb/qFc92YnH1atWpWyPGvWrOTPp556apx33nkp9e24445x4IEHxmc+85k47bTTYu7cuRGxNsF84YUXxnXXXZez2tYN2RiR+WMakfpiJ5+PKdCz9Gf9eX2ZPB8APTSisntouisLn3zyyXjyySfj2muvjWnTpglyQp7pz5XRn++6667485//nFz+7ne/GwMHDsz4XEB29Nzy77nrT8W2bvvJkyfHpEmTUm7v06dP7L///rH//vvHhAkT4owzzohFixZFxNpRUS644IK44447Mq4P6B79ubz784b3e10AqW/fvvH9739/o9FBd9555zjiiCPivvvui69+9avx7rvvRkTEP//5z7j++uvjtNNOy7g+4L9MxwZ59pvf/Ca++tWvRmtra/K2urq6mDZt2kbp6Ii1Q0Gub/0Ec1e0tbWlLHfnD3t3rX8f1/eZz3wmzj///E6TxNttt1384he/SBla8aGHHsrp8I/rP64bPkZdsf59y+djCvQc/Vl/Xl+mzweodHqoHnriiSfGn/70p3j66afj8ccfj+nTp0d9fX3K1Y3//ve/46STTkqZvgLoWfpzZfTnN998My677LLk8gknnBAf+tCHMj4PkB09tzJ67uDBg+Ooo46KPffcM4YMGRIXXXTRRgGkDY0ZMyauvvrqlC/Qn3rqqXjggQcyrg/InP5c/v25s/t9xRVXpJ2e+MMf/nB873vfS7nt+uuvjxUrVmRcH/BfQkiQR7/4xS/iG9/4Rsofw8GDB0dDQ0OMGDGiw302fAG0flK4KzZMA+fzi9OOXli95z3via997Wub3HfrrbeOU045JeW2u+66K1elpTwO3Umhr/879GU0lD79WX9eX3eeD1DJ9FA9NCLi/e9/f2y33XZRU1MTtbW1MWbMmLjgggti+vTpMWzYsOR2S5YsiQsuuCDjD3GBzOnPldGf29ra4utf/3pyCorRo0fH17/+9W5WCnSXnlsZPTdi7eveH/zgB3H77bfHww8/HCeccEKXjjtmzJg47rjjUm77wx/+kHF9QGb058rozxsGxyIiDjnkkPjoRz+6yeMeccQR8f73vz+53NTUFA8++GDG9QH/ZTo2yIM1a9bEpZdeGrfffnvK7UOGDIkbb7wxtt9++073XT91HBHJIQG7asO07mabbZbR/tno27fvRrcdddRRXZ7r9VOf+lT85Cc/SS4/+uijKesvuOCC+O1vf9ulY40cOTJmzJiRXN58882Tj2Wmj2lE6uPanblrgeKgP/+X/pzd8wEqkR76X3po53baaae4+uqr4/jjj09+yPjMM8/E3//+9zjggANycg4glf78X5XQn6+//vp47LHHImLtly+XX3559OvXL+NzAN2j5/5XJfTcbB133HEpz5WZM2fm9PjAf+nP/1UJ/bmj+9fVkGjE2v78j3/8I7n86KOPxsc+9rGMawTWMhIS9LDm5uY4/fTTN3qhM2rUqLjttts2+YXmFltskbK8dOnSjM6/4fZbbrllRvtnY8CAARulj/fee+8u7z9s2LCoq6tLLr/xxhs5u2J6/ce1ubk5o6EfV69enfICafDgwTmpCcgv/Vl/Xl+2zweoNHqoHpqJXXfdNY466qiU2/7617/m7PjAf+nPldWf58yZE//v//2/5PLnP//52GuvvbIrFugyPbeyem4u7LbbbilTsr311lvR0tKS03MA+nMl9ucBAwZstE8m93vs2LEpy6+99lqX9wU2JoQEPeg///lPnHDCCfHwww+n3L7rrrvGbbfdFqNGjdrkMdafuiAiYtGiRRnV8Pbbb6csDxkyJKP9s1FVVbXRi6tMz7/+9mvWrMn4xV5n1n9cW1tbo6mpqcv7Ll68OOVF13ve856c1ATkj/6sP68vF88HqCR6qB7aHR/5yEdSlufMmZPT4wP6cyX257/85S8pX17//Oc/j/e+971p/zv55JNTjn/llVemrL/gggu6cxeh4ui5lddzc6G6ujoGDhyYctuSJUtyeg6odPpzZfbnDe9j3759o3///l0+/ob7Z1IbsDEhJOghL7zwQpxwwgnx0ksvpdx+wAEHxC233NLlP/pbb711yvJ//vOfjOqYO3duyvI222yT0f7ZGj16dMryypUrM9q/V6/UWSPXn/M1GxvWlcnjuuFjuu222+akJiA/9Oe19Oe1cvV8gEqhh66lh2Zuw9p8oAe5pT+vpT8D+aDnrqXnds+G9zOf0zRBudOf16rE/jxq1KiUEaBWr16dUd0b3udMRmkCNtZr05sAmXr22WfjlFNO2SgdfNxxx8V3vvOdjf6YpbPlllvG0KFDY+HChRERG7142pSXX345+XNdXd1GV1r0tJ133jmeeOKJ5PL8+fMz2n/9K0Gqq6tTksvf//734/vf/3636tpll11Sll988cV43/ve16V9X3zxxZTlnXbaqVs1APmnP/+X/pzb5wNUAj30vyqxh7a0tMSzzz4bc+fOjTfeeCPe8573xMSJE7tc24Yf4PXr16/L+wLp6c//VYn9GcgvPfe/KrHntrW1RWNjYyxatCgWL14cbW1tMX78+C7X1tLSkvLc6d27d0YjdQCd05//qxL7c58+fWK77bZLPvZtbW2xcOHCGD58eJeOv+GFUhtOyQdkxkhIkGMvvvhihy90zj777Pje977XrS8099prr+TPjY2NMW/evC7t99prr6UME7nPPvtkfO5sjRs3LmX50Ucf7fK+zc3N8cYbbySXt9lmm5Q5s7Ox/mMaESkvyDbl8ccfT1ne8D4CxUl/TlXp/bknng9QzvTQVJXYQ1etWhUTJ06Mr3/96/HTn/40rrvuuoxqW/8+R0QMHTo0o/2BjunPqSqtP5900knxl7/8JaP/fvCDH6Qcb8NjfO1rX+vGPYTKoOemqrSeGxGxdOnSOOSQQ+L444+P008/Pf7nf/4no9Eynn322ZSROXbfffcu7wt0Tn9OVYn9OSJi7733TlmeOXNml48/e/bslOUddtihy/sCGxNCghxasmRJnHbaaSkvdKqqquLb3/52nHXWWd0+7oc+9KGU5XvvvbdL+/3lL39JWT7wwAO7XUN3HXDAASkvUO6777549913u7Tv/fffn/Imbr/99stZXTvssEOMHDkyuTxjxoxoaWnZ5H4rV66M//u//0sub7XVVoZChxKgP2+skvtzTz0foFzpoRurxB7av3//2GqrrZLL8+bNiyeffLLLtf3tb39LWRbkh+zpzxurtP68xRZbxNZbb53Rf3V1dSnnGDhwYMr6wYMH5+AeQ/nRczdWaT03Ym3fHTZsWHJ5+fLl8Y9//KPLtf3ud79LWf7ABz7Q5X2BjunPG6vE/hwRccghh6Qs33PPPV2ubcaMGSnLubzfUImEkCCHLrzwwpRhDauqquLyyy+PE044IavjHnbYYVFTU5Ncvummm2LFihVp91m+fHncfPPNyeXa2to47LDDsqqjOwYOHBgf/vCHk8tLly6NK6+8cpP7rV69On7+85+n3HbkkUfmtLZPfOITyZ+XLFkSd9xxxyb3ue2221JezB577LE5rQnoGfrzxiq5P/fU8wHKlR66sUrtoYcffnjK8ob3pTMvvvhi3H333cnlqqqqgvzeoNzozxur1P4M9Dw9d2OV2nMPPfTQlOVf/OIXXarppZdeirvuuiu53KtXr5gwYUKX9gU6pz9vrFL784EHHpgy6vLf//73ePDBBzd5/Llz58bvf//75PKAAQM2CqEBmRFCghy5++67N7q697zzzoujjjoq62P3798/PvWpTyWX58+fH1//+tc7Heq1ra0tvva1ryXnq42ImDhxYvTr1y/rWrrjjDPOiKqq/7abG264If7617+m3eeyyy5LmeN1r7322mioxmxNnDgx+vbtm1z+wQ9+EE899VSn2z/xxBMxderU5PLmm28eJ554Yk5rAnJPf+5cJfbnnnw+QDnSQztXiT30hBNOSLmacsaMGTF9+vS09TQ2NsaXvvSlWLNmTfK2Y489NrbeeutN3RUgDf25c5XYn4Geped2rhJ77oQJE6K6ujq5/NBDD8Utt9yStp7GxsY466yzYtWqVSnH2XB0OiAz+nPnKrE/9+rVK0477bSU2y6++OJ45ZVXOj1+c3NznHvuubFy5cqUGgv1e4NyIYQEOdDe3h5XX311ym0777xzfOQjH4nXX3894/+WLFmy0TnOPPPM2GKLLZLLf/nLX+ILX/jCRvPQzps3L77whS/Efffdl7xt6NChG/3hzaedd945TjnllOTymjVr4stf/nL8+Mc/jqamppRtFyxYEF/+8pfj9ttvT97Wu3fvuPDCC3NeV11dXZx66qnJ5VWrVkV9fX385je/SZmbu7W1Ne6888449dRTU4aG/NKXvhRbbrllzusCckd/Tq/S+nM+ng9QTvTQ9Cqth0ZEjB49Or7whS+k3HbJJZfE1KlTo7m5OeX21tbWuPvuu+NTn/pUvPHGG8nbt9pqq/jqV7+a1X2ESqc/p1eJ/RnoOXpuepXYc3faaaeYOHFiym2XXnppXHbZZRvd59bW1vjDH/4Qxx9/fLz22mvJ20ePHu01MWRJf06vEvtzRMSJJ54Ye+65Z3J5wYIFMXHixLjzzjs3mvrtmWeeiUmTJsWzzz6bvG3EiBEF/b1BuUi0t7e3F7oIKHUPPvhgTv8onXXWWXH22WdvdPv//d//xZlnnhmrV69O3lZdXR1jxoyJoUOHxsKFC+Ppp59OSWL37t07brjhhhg3blxWNf3mN7+JyZMnJ5enTJmS0TDgra2tccEFF6QMaRgRUVNTEzvvvHPU1dXFwoUL45lnnkl5oRER8a1vfavHrvZbvXp1nHbaafHII4+k3D506NDYbbfdor29PWbPnp2SXo+IOOigg+JnP/tZJBKJrM4/fvz45AvWkSNHbjTvLJAd/XnTKqk/5+v5AOVCD920Suqh67S2tsY555wTf/nLX1Jur6mpiTFjxsTgwYNj2bJl8eyzz8Y777yTss2WW24Zt9xyS2y//fZZ3kOobPrzplVif+6qf/zjH3HyyScnl72mhfT03E2rxJ7b0tISp512WsycOTPl9t69eyd/Z8uWLYvnnntuo2DDiBEj4qabbopRo0ZldwehwunPm1aJ/TkiYvHixfG5z30u5syZk3L7oEGD4r3vfW8MGDAg/v3vf8dLL72Usr5fv35x0003xR577JHFvQMiInoVugAoBw899FBezvOhD30opk2bFl/96leTc8+2trbGk08+2eH2m2++efz4xz/O+oVOLlRXV8fll18e73nPe+KGG25IviBbuXJlp0Mt9u3bNy6++OI4/vjje6yu3r17x9VXXx1nnXVWyu9x4cKFG73AWeeQQw6J//f//l9OPvwDepb+vGmV1J/z9XyAcqGHblol9dB1qqur40c/+lFcccUVcfPNNydvX7lyZTz22GOd7rfHHnvET37ykxg+fHiG9wbYkP68aZXYn4GeoeduWiX23D59+sRVV10V3/zmN1O+3F+9enU8/vjjne73vve9L370ox8JIEEO6M+bVon9OWLtBVA333xznHfeefHwww8nb29qaopHH320w32GDRsW06ZNE0CCHDEdG+TA3Llz83au8ePHx5/+9Kc48sgjU+ZNXV/v3r3jyCOPjLvvvjsOOuigvNW2KVVVVfH1r3897rzzzjj44IOjd+/eHW7Xu3fvOOKII+Kuu+7q0Rc669TU1MR1110Xl19+eWyzzTadbrfNNtvEZZddFtdcc02njz1QXPTnrqmU/pzP5wOUAz20ayqlh66vT58+cdFFF8XNN98cBxxwQFRVdf7Rwnvf+964/PLL44477hBAghzRn7umEvszkHt6btdUYs/t169f/OD/Y+++o+wq6/bhX2cmvRdSIfRIh9CNgkAEBRSQJopiQYoIiKg8j/kBFgQRLEhTQHoVkV4eEQGpQXqvidQkJIRMwqRMysx+/8ibYyYkIclMzknI57PWWex7731/93eHrFmTyZX7/s1vcsEFF2SbbbZZ5F+Mb7DBBvnlL3+Za6+9VgAJWomvz4tnZfz6nCTdu3fPRRddlD/84Q/ZeOONF3nfIYcckltvvTWbbbbZkrwCsAi2Y4MV2NSpU/PYY49l7NixmTx5cjp16pTVV189m2++ebp3717t9j5SfX19Hn/88YwbNy51dXXp2LFj1lxzzWyxxRbp1q1b1fp67bXX8uKLL2bChAlpbGxM7969s9FGG2W99dbzLw+BxeLr87Lh6zOsHHwNXTaW5dfQSZMm5Yknnsi7776b+vr6dOnSJb17984WW2yRfv36tdIbANXm6/Oy4XtcYEF8zV02luXX3Lq6ujz55JPNvifu06dPNtxwQ8Ej+Bjx9XnZWNbfE48ePTrPPvts3nvvvUydOjXdunXLJz7xiWy22WZp165dK7wBMK/lLoQ0ffr0jB49OhMnTsz06dMzY8aMtG3bNp06dUrnzp0zYMCA9O7du9ptAgAAAAAAAAAA/7821Xz4zJkz88gjj+TJJ5/Mc889lxdffDGTJk36yHmdOnXKGmuskU033TTbbLNNtt566/Tp02fZNwwAAAAAAAAAAHxIxVdCamxszN13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ZUqamppSU9OyLNSMGTPywQcflLdj69mzZ4vq8fEwduzY3HPPPeXx6quvno4dO1axIwAAAAAAAACA6ps+fXreeuut8njYsGEZMGBAi2pWPITUu3fv8nFTU1OeffbZDBkypEU1//3vfydJiqJIqVRq9gxWXvfcc09OOumkarcBAAAAAAAAALDc+9rXvtai+RXfjm2zzTZLqVQqr1r0t7/9rcU1r7zyyg89AwAAAAAAAAAAqIyKh5D69OmTDTbYIMmclYtuuummPPnkk0td77bbbsv9999fDjWtt956VkICAAAAAAAAAIAKqvh2bEly4IEH5oQTTkipVMrs2bNz9NFH57zzzssmm2yyRHXuuOOO/L//9/9SKpXKW7Htv//+y6hrVjSDBg1qNv7pT3+a9dZbr0rdAAAAAAAAAAAsH1555ZWcdNJJ5fH8GYulUZUQ0j777JNLL700o0aNSqlUyvvvv5+vfe1r+frXv56vfvWrH/lizz//fC644ILcdddd5fBRkgwYMCAHHHBAJV6BFUCnTp2ajddbb71stdVWVeoGAAAAAAAAAGD5NH/GYmlUJYRUU1OTM844IwceeGCmTJmSUqmUmTNn5pJLLskll1ySgQMHpk2b5q2ddtppGT16dJ5++um89957SVIOIBVFkXbt2uX000//0DwAAAAAAAAAAGDZqlpiZ/DgwTnrrLNy5JFHZvr06eUwUZKMHj26vLpRMidsdOmll5aP55o7p7a2Nr/85S+tcgMAAAAAAAAAAFVQU82HDx06NNdff30GDx5cXtVo7idJs/Hc8NH851ZZZZVcdtll2Wuvvar5KgAAAAAAAAAAsNKqaggpSdZaa63ceOONOf3007PBBhukKIoFfpI0G/fp0yc//vGP8/e//90KSAAAAAAAAAAAUEVV245tXrW1tdlzzz2z5557ZsyYMXniiSfywgsvpK6uLpMnT86sWbPSrVu3dO/ePeuss0623nrrrLfees22bAMAAAAAAAAAAKpjuQghzWvgwIEZOHBg9thjj2q3AgAAAAAAAAAALIaqb8cGAAAAAAAAAACs2KoSQjr88MPzj3/8I7Nnz67G4wEAAAAAAAAAgFZUle3Y7rvvvtx///3p0aNH9txzz+y9995Zf/31q9EKAAAAAAAAAADQio2j4wAA6BxJREFUQlXdjq2uri6XX3559t577+yzzz65+uqr88EHH1SzJQAAAAAAAAAAYAlVNYRUKpVSFEWKosiLL76YX/7yl9l+++3zox/9KA899FA1WwMAAAAAAAAAABZTVUJIRx11VAYNGpSiKJLMCSPNDSTNmDEjd9xxRw455JDstNNOOeuss/L2229Xo00AAAAAAAAAAGAxVC2E9I9//CNXX311vvzlL6dr167NAklJUhRFxo4dmz/96U/53Oc+l4MOOig333xzGhoaqtEyAAAAAAAAAACwEFXdjm2LLbbISSedlAcffDB/+MMfsuOOO6a2tjZFUTRbHakoijz++OP5yU9+ku222y4//elP8/TTT1ezdQAAAAAAAAAA4P/XptoNJEm7du2y6667Ztddd83EiRNz66235uabb86LL76YpPnqSFOmTMl1112X6667LmuttVb23Xff7LXXXllllVWq+QoAAAAAAAAAALDSqupKSAvSq1evfPOb38wNN9yQ22+/Pd/5znfSt2/fBW7X9p///Ce//e1vs+OOO+aII47IP//5zzQ2NlazfQAAAAAAAAAAWOksdyGkea2zzjo57rjj8q9//SsXX3xx9txzz3Ts2LFZIKkoisyePTv/+te/cvTRR+czn/lMlbsGAAAAAAAAAICVy3KxHdtHKZVK+dSnPpVPfepTmTFjRu6+++78/e9/zwMPPJCGhobyfUVRZOLEiVXsFAAAAAAAAAAAVj4rRAhpXu3bt8/uu++ePn36pEePHrn++uvT1NRU7bYAAAAAAAAAAGCltcKEkIqiyIgRI3LnnXfm7rvvzvvvv1/tlgAAAAAAAAAAgKwAIaQXX3wxt9xyS2677bZy8KgoiiRztmmbe9yuXbvsvPPO2W+//arWKwAAAAAAAAAArIyWyxDS2LFjc+utt+aWW27JqFGjkjQPHs0NHxVFkQ033DD77rtv9thjj3Tr1q2abQMAAAAAAAAAwEppuQkhTZkyJX//+99z880354knniiHjJIPB4+6d++ePfbYI/vtt1/WX3/9KncOAAAAAAAAAAArt6qGkBobG3Pffffllltuyb333puZM2cmab7q0dxxTU1NPvWpT2XffffNzjvvnHbt2lWtbwAAAAAAAAAA4L+qEkJ65plncvPNN+f//u//MmnSpCQL325ttdVWyz777JN99tkn/fv3r0a7AAAAAAAAAADAIlQlhHTAAQeUg0bJh4NHHTp0yC677JJ99903n/zkJ6vRIgAAAAAAAAAAsJiquh3bvNutJckmm2ySfffdN1/84hfTpUuXarYGAAAAAAAAAAAspqqGkIqiSM+ePbPnnntmv/32y+DBg6vZDgAAAAAAAAAAsBSqEkKqqanJ9ttvn3333TfDhg1LmzZVzUIBAAAA8DHT2FRkfH3DAq/17dohtTWlCncEAAAA8PFWlfTPv/71r/Tt27cajwYAAABgJTC+viFDT71ngddGDB+WAd07VrgjAAAAgI+3mmo8VAAJAAAAAAAAAAA+PqoSQgIAAAAAAAAAAD4+hJAAAAAAAAAAAIAWadOaxTbYYINm41KplBdffPEj72tNC3smAAAAAAAAAACwbLRqCKkoila9DwAAAAAAAAAAWP61aggpmbMSUfLRQaO597Um4SYAAAAAAAAAAKi8Vg8hWQ0JAAAAAAAAAABWLq0aQrr77rtb9T4AAAAAAAAAAGD516ohpFVXXbVV7wMAAAAAAAAAAJZ/NdVuAAAAAAAAAAAAWLEJIQEAAAAAAAAAAC0ihAQAAAAAAAAAALRIm2o3MK/Zs2fnueeeyxNPPJHXXnstkyZNyuTJkzNz5szccMMN5fueffbZPPfcc9ltt93Sq1evKnYMAAAAwIqusanI+PqGhV7v27VDamtKFewIAAAAYMWzXISQ6urqctVVV+Xqq69OXV1ds2tFUaRUav5DnmeeeSannHJKfvOb3+TrX/96jjzyyHTs2LGSLQMAAADwMTG+viFDT71noddHDB+WAd397AkAAABgUaq+HdsDDzyQL3zhCzn33HMzceLEFEVR/izM6NGjkyQNDQ256KKLsv/+++ett96qVMsAAAAAAAAAAMA8qhpCuuqqq3L44YeXw0elUulDqx4tyOjRo8v3FkWRkSNH5lvf+lbGjRtXga4BAAAAAAAAAIB5VS2EdM899+SUU05JU1NTOXhUFEX69u2b3XbbLZ/+9KcXuhpS//79U1NT02yrtjFjxuTHP/5xxfoHAAAAAAAAAADmqEoIacqUKTn++OPLAaSiKLLBBhvksssuy3333Zczzjgju+yyy0LnH3/88bn99tvzqU99qlkQ6fHHH8///d//Veo1AAAAAAAAAACAVCmE9Oc//zl1dXXl8NCnPvWpXHvttdl2220Xu8aaa66Ziy66KF/5yleaBZGuvvrqZdIzAAAAAAAAAACwYFUJId18883lFZBWWWWVnH322WnXrt0S1ymVSvnZz36WjTbaKMmc7dwef/zxTJ48ubVbBgAAAAAAAAAAFqLiIaRXXnkl7777bpI5IaLvfve76dy581LXK5VKOfTQQ1MURfncc8891+I+AQAAAAAAAACAxVPxENKoUaOSpBwa2nnnnVtcc7vttkupVCpvyfbOO++0uCYAAAAAAAAAALB4Kh5CmjBhQvm4ffv26devX4trdunSJV27di2P6+vrW1wTAAAAAAAAAABYPBUPIc2YMaN83K5du1arO2vWrPJxbW1tq9UFAAAAAAAAAAAWreIhpF69epWP6+vrM3369BbXrKura1anZ8+eLa4JAAAAAAAAAAAsnoqHkObffu3RRx9tcc377rsvSVIURZKkf//+La4JAAAAAAAAAAAsnoqHkLbYYou0bds2pVIpSXLppZe2qF5TU1MuvPDCcr22bdtm8803b2mbAAAAAAAAAADAYqp4CKlTp07ZZpttUhRFiqLII488kmuuuWap65122mkZOXJkkqRUKmXLLbdMhw4dWqtdAAAAAAAAAADgI1Q8hJQkhx12WJI5oaGiKHLyySfniiuuWKIaM2fOzM9//vNcfvnl5TpJ8q1vfau12wUAAAAAAAAAABahKiGkbbfdNsOGDUtRFCmVSmlsbMyvfvWr7LfffrnhhhsyZsyYNDU1LXDum2++mYsvvji77LJLrr322nL4aO4qSDvssEMlXwUAAAAAAAAAAFZ6bar14NNOOy1f+cpXMmrUqPJKRs8//3yOP/748j3zrnC0zz77ZPTo0fnggw+SpFn4qCiK9O3bN7/73e8q/yIAAAAAAAAAALCSq8pKSEnStWvXXHjhhfnEJz5RXhFpbqBo3k8yJ3D04osvZvLkyeXz897fr1+/nHfeeenXr1+1XgcAAAAAAAAAAFZaVQshJcmAAQPyt7/9LV/96ldTW1vbLFz0UZ+5YaQddtghN954YzbccMNqvgoAAAAAAAAAAKy0qhpCSpJ27drlZz/7Wf7xj3/km9/8ZgYOHPih1ZDm/3Tr1i1f+MIX8te//jXnn39+evXqVe3XAAAAAAAAAACAlVabajcw18CBAzN8+PAMHz4848ePz/PPP5+6urpMnjw5s2bNSrdu3dK9e/ess846WW+99ardLgAAAAAAAAAA8P9bbkJI8+rbt2+GDRtW7TYAAAAAAAAAAIDFUPXt2JbUhAkT8s4771S7DQAAAAAAAAAA4P+3XISQ3n///Zx33nk58MADM2rUqEXee+edd2aXXXbJTjvtlHPOOScTJkyoUJcAAAAAAAAAAMCCVDWE1NTUlLPOOivDhg3LmWeemaeeeir/+c9/FjnnnXfeSVEUGTt2bM4999zsuuuuufbaayvUMQAAAAAAAAAAML821XrwzJkzc8QRR+Thhx9OURRJklKplNdff32R895+++2USqUkSVEUmTJlSn7+85/nP//5T4YPH77M+wYAAAAAAAAAAJqr2kpI/+///b889NBDKYoipVIppVIpRVF8ZAipU6dOad++/YfmXX755bnwwgsr1D0AAAAAAAAAADBXVUJI999/f2677bZmIaL+/fvnJz/5SX7wgx8scu7pp5+eRx99NL///e+z7rrrlsNIRVHkzDPPzMiRIyvzEgAAAAAAAAAAQJIqhZAuvvjiZuNddtklt99+e771rW+lX79+Hzm/Xbt22X333XPjjTfmC1/4QjmINHv27FxwwQXLqm0AAAAAAAAAAGABKh5CmjhxYh555JHy6kUbbrhh/vCHP6RTp05LXKtNmzY57bTTssEGGyRJiqLI3//+98yYMaO12wYAAAAAAAAAABai4iGkZ599NknKqxd9//vfT21t7VLXa9OmTb773e+mKIokyaxZs/Lkk0+2Sq8AAAAAAAAAAMBHq3gIacyYMeXj2traDB06tMU1t99++5RKpZRKpSTJW2+91eKaAAAAAAAAAADA4ql4CKm+vr583KVLl7Rr167FNTt16pRu3bqVx5MnT25xTQAAAAAAAAAAYPFUPIQ0b+hoypQprVa3oaGhfNyhQ4dWqwsAAAAAAAAAACxaxUNIq6yySvm4sbExr7zySotrvvPOO5kxY0Z53KtXrxbXBAAAAAAAAAAAFk/FQ0jrr79+kqRUKiVJbrnllhbXvOOOO5IkRVEkSdZdd90W1wQAAAAAAAAAABZPxUNIgwcPzsCBA5PMCQ1deeWVGTVq1FLXGzduXP785z+XQ02rrLJKOegEAAAAAAAAAAAsexUPISXJXnvtlaIoUiqVMmPGjBxyyCH5z3/+s8R1xo0bl0MOOST19fXlenvssccy6BgAAAAAAAAAAFiYqoSQDjrooHTt2jXJnG3Zxo4dm3322Sdnn3123n333Y+cP3HixFx00UX54he/mJEjR5ZXQerSpUsOO+ywZdo7AAAAAAAAAADQXJtqPLRXr175yU9+kuOPPz6lUimlUikNDQ354x//mPPOOy9rrbVWNthgg/Tp0yddunRJkkydOjUTJkzIyy+/nFGjRqWxsbG8+tHc//70pz9Njx49qvFKAAAAAKwkGpuKjK9vWOC1vl07pLamVOGOAAAAAKqvKiGkJNl3333z1ltv5fzzzy8HkYqiSGNjY0aOHJlRo0YtcF5RFOXjuSsgJckxxxxjKzYAAAAAlrnx9Q0Zeuo9C7w2YviwDOjescIdAQAAAFRfVbZjm+vYY4/Nqaeemi5dupRXM5r7SeYEjub9JGl2T1EU6dKlS84888x897vfrearAAAAAAAAAADASquqIaQk2XvvvXPXXXfl8MMPT79+/T4UOprXvNd69uyZI488MnfeeWc+//nPV6FzAAAAAAAAAAAgqeJ2bPPq0aNHjj322PzgBz/Iyy+/nCeffDKvv/56xo0bl2nTpiVJunfvnm7dumXdddfN5ptvnvXXXz+1tbVV7hwAAAAAAAAAAFguQkhzlUqlbLDBBtlggw2q3QoAAAAAAAAAALCYqr4dGwAAAAAAAAAAsGITQgIAAAAAAAAAAFpkudqOba6JEyfm1VdfzaRJkzJ58uTMmDEj3/jGN8rX6+rqUlNTk+7du1exSwAAAAAAAAAAIFmOQkhvv/12Lr/88tx///156623PnR93hDSPffck5///OfZaaedcvTRR2fw4MGVbBUAAAAAAAAAAJhH1UNI06ZNyy9/+cvccsstaWpqSlEUH7qnVCo1G48ePTqzZs3KXXfdlbvvvjvf/e53c/TRR1eqZQAAAAAAAAAAYB411Xz466+/nn322Sc33XRTGhsbUxRFSqVSs8+CjB49unzc2NiYP/7xj/nxj39cqbYBAAAAAAAAAIB5VC2ENGHChHznO9/JG2+8UQ4fJSmvhNSxY8cFroqUJGPGjCkfl0qlFEWR22+/PWefffaybxwAAAAAAAAAAGimaiGkY489NmPGjCmveFRTU5MvfelLueSSS/LUU0/lf/7nfxY698wzz8wRRxyRDh06JPlvEOmCCy7IqFGjKvUKAAAAAAAAAABAqhRCuuuuu/LYY4+Vw0PdunXLlVdemV//+tcZOnRoOVy0ML169coxxxyTG264Iauvvnr5/OzZs3PppZcu4+4BAAAAAAAAAIB5VSWEdNFFFyWZs/VabW1tzjvvvGy++eZLXGettdbKxRdfnC5dupQDTXfccUdmz57d2i0DAAAAAAAAAAALUfEQ0sSJE/Pss8+Wt2Hbb7/9liqANNeqq66agw8+OEVRJEmmTZuWl19+ubXaBQAAAAAAAAAAPkLFQ0hPP/10mpqayqGhfffdt8U1v/jFLyZJSqVSkuS1115rcU0AAAAAAAAAAGDxVDyE9N577/334TU12WSTTVpcc9CgQenYsWN5PHny5BbXBAAAAAAAAAAAFk+bSj9w0qRJ5eMuXbqUVy9qqXbt2mX69OkplUqZOXNmq9RcUpMmTcr111+fBx54IK+99lomT56cLl26pH///hkyZEj22WefbLrppsu8j1mzZuXOO+/MQw89lGeeeSbvv/9+pk6dms6dO6d3797ZbLPNsv322+dzn/tc2rRZ8t8CTU1Nuffee3PHHXfk2WefzYQJE5Ikffv2zVprrZUvfOEL2WWXXdKhQ4fWfjUAAAAAAAAAAJZDFQ8hde3atXw8derUVqk5e/bsfPDBB+VAU7du3Vql7pK47rrrcuqpp37onerq6lJXV5eXXnop11xzTT772c/mlFNOSc+ePZdJH3fccUdOPfXUjB8//kPXJk2alEmTJmXUqFG54YYbstpqq+XEE0/MjjvuuNj1R44cmf/5n//JCy+88KFrb7zxRt54443ce++96devX37zm99k2223bcnrAAAAAAAAAACwAqj4dmyrrLJK+bixsTEvvfRSi2s+9dRTKYoiRVEkSXr37t3imkvijDPOyAknnLBYoaq77747e++9d8aNG9fqfZx22mk59thjFxhAWpB33nkn3/3ud3PBBRcs1v3PPvtsvvrVry4wgDS/cePG5Vvf+lZuuummxaoNAAAAAAAAAMCKq+IrIW244YZJUl616JZbbskGG2zQoprXXntts/FGG23UonpL4qabbsp5553X7Nyuu+6aPffcM4MGDcrkyZPz4IMP5pprrsnkyZOTJGPHjs1RRx2Vq666Ku3atWuVPi6++OJcfPHFzc6tt9562W+//bLJJpukW7dumTRpUp5++un85S9/yVtvvZUkKYoiv/vd79KvX7/stddeC63//vvv53vf+14++OCD8rm11147Bx10UDbeeOO0adMmL730Uq666qpySKmpqSknnnhi1lxzzQwZMqRV3hMAAAAAAAAAgOVPxVdCWm211bL22msnmROA+ctf/pJRo0Ytdb0RI0bk9ttvL4ea1lhjjQwcOLBVev0oEydOzMknn1we19TU5Pe//33OPPPMfPazn80nPvGJbL311jn22GNz4403ZvDgweV7n3322Vx++eWt0sfYsWNz5plnNjt39NFH5+abb843vvGNbL755llnnXWy5ZZb5jvf+U7uuOOOHHDAAc3u/+Uvf5m6urqFPuPUU0/Ne++9Vx5//vOfz0033ZQDDzwwm266aTbccMPsu+++ue666/KNb3yjfN/MmTNz4oknpqmpqVXeFQAAAAAAAACA5U/FQ0hJst9++6UoipRKpUyfPj3f+973Mnr06CWu88QTT+SYY45JknK9vffeu7XbXagLL7ww9fX15fHRRx+dL3zhCwu8d9VVV80FF1yQnj17ls/9+c9/zpQpU1rcx8UXX5yGhoby+Gtf+1qOOuqocjBrfm3bts0vfvGLDBs2rHyuvr4+V1xxxQLvf/XVV3PbbbeVx4MHD85vfvObtG/f/kP31tbW5vjjj89uu+3WbP7tt9++xO8FAAAAAAAAAMCKoSohpK9//esZMGBAkjnbsr355pvZd999c9VVV2X69OkfOX/ChAk57bTT8s1vfrPZ9mA9evTIQQcdtMz6ntfMmTNz/fXXl8e9e/fOIYccssg5AwcOzBFHHFEeT5o0qcXhnKIocuedd5bHnTp1yve///2PnFcqlfK///u/zc7dc889C7z3L3/5S4qiKI+POeaYBQaQ5nXCCSc022ruqquu+sieAAAAAAAAAABYMVUlhNSuXbucdtppadOmTZI5gZhJkybl5JNPztChQ/ONb3wjN910U7M5V155ZU477bR89atfzY477phLL700s2fPTqlUSlEUqampyUknnZROnTpV5B1GjBiRSZMmlce77757s9DNwuy9997l907SLEC0NN58882MGzeuPN5mm23So0ePxZq75pprZvXVVy+PX3311Q9tmzZ/yKlHjx7ZaaedPrL2Kqus0uy+p59+ulmfAAAAAAAAAAB8fFQlhJTMCcuccsopqamZ08LcMFFDQ0Mee+yxPPPMM+V7i6LIKaeckksvvTRPP/10Zs+eXd5+ba4f/OAH2WWXXSrW/8MPP9xsvP322y/WvG7dumXTTTctj//973+3aEu2UaNGNRuvu+66SzS/d+/e5ePGxsZmwaokeeWVVzJhwoTyeOjQoc1CVIsy769JURS5++67l6g3AAAAAAAAAABWDFULISXJnnvumcsuuyx9+/Yth4rmDRbNHc8NKM3dEmzecx06dMhvf/vbHHbYYRXt/YUXXmg23mSTTRZ77sYbb1w+nj17dp5//vml7mP77bfPP/7xj1xxxRX57W9/m89//vNLNH/8+PHNxp07d242bq33TNIsWAYAAAAAAAAAwMfH4i1pswxttdVWufXWW3PVVVflqquuarbqTpJmoaQk5SBShw4dsvfee+c73/lOVltttYr1O9e8KxD17NkzvXr1Wuy5a6655odqffKTn1yqPtq1a5c11lgja6yxxhLPffPNNzN69OjyuFevXmnfvv2HepvXOuuss9j15+9p5MiRS9wjAAAAAAAAAADLv6qHkJI5W5QdccQROeSQQ/L000/niSeeyAsvvJC6urpMnjw5M2fOTPfu3dO9e/ess8462WqrrbLtttuma9euVem3oaEhEydOLI8HDBiwRPP79evXbDxvEKiSLrvssmbjT33qUx+6Z8yYMc3G/fv3X+z6nTp1Srdu3fLBBx8ssBYAAAAAAAAAAB8Py0UIaa62bdtm6623ztZbb13tVhZp/tWaevfuvUTz5181qa6ursU9LamXX345f/3rX5ud+8IXvvCh+95///1m41VWWWWJntOrV69yCGnSpEnlbfcAAAAAAAAAAPj4qEoI6Xe/+12eeeaZ7L///vnc5z73oS3AlndzQzVzdenSZYnmd+7cudm4vr6+xT0tiSlTpuRHP/pRZs2aVT636aabZtiwYR+6d/Lkyc3GLXnXpqamTJ06dYlqjBkzZqlXUHrllVeWah4AAAAAAAAAAEum4iGkGTNm5JprrsnUqVPz2GOP5Ze//GUuv/zyrL/++pVuZanNnDmz2bhDhw5LNL9du3aLrLcszZo1K8cee2xGjhxZPte2bduccMIJC7y/2u96/fXX55xzzlmiOQAAAAAAAAAAVFZNpR/46KOPZsqUKUmSoijStWvXrLfeepVuo0XmXUEoSWpra5dofps2zbNfs2fPbnFPi2P27Nn54Q9/mPvvv7/Z+R//+MfZbLPNFjhn3ndd0vdMPvyu8//aAQAAAAAAAACw4qv4SkijRo0qH5dKpWy99dYplUqVbqNF5u+3qalpiebPf//ShHuWVENDQ37wgx/k3nvvbXZ+r732yre+9a2Fzqup+W9ObUnfM0kaGxubjecPJQEAAAAAAAAAsOKreiJklVVWqXYLS2z+LcaWdCWj+e+fv15rmzx5cr73ve/l8ccfb3Z+l112ya9+9atFzp23t6Io0tjYuEShqflDSEv6rvvuu2+GDh26RHPmeuWVV3LSSSct1VwAAAAAAAAAABZfxUNI6667brPxvCsjrSg6d+7cbDx9+vQlmj9t2rRm4w4dOrS4p4V56623cthhh+X1119vdv7zn/98fve7333kykQLetcuXbos9vNb+q4DBw7MwIEDl2gOAAAAAAAAAACVVfPRt7SuT3/601ljjTWSzFlZ5/7778/IkSMr3UaL9OzZs9n4gw8+WKL59fX1zca9e/ducU8L8vjjj+fLX/7yhwJI++23X84444y0bdv2I2v06NGj2XhJ33Xe+7t167ZYzwQAAAAAAAAAYMVS8RBSqVTKGWeckW7duiWZs13XIYcckhdffLHSrSy1nj17pn379uXxhAkTlmj+/Pcviy3pbr755nz7299OXV1ds/OHH354TjnllMXeUq1///7NxkvyrkVRZOLEieXxirj1HgAAAAAAAAAAH63iIaQk2XDDDfO3v/0tm222WZLk3Xffzb777pvvfOc7+fOf/5zHH388Y8aMydSpU6vR3kcqlUoZNGhQeTx69OgURbHY899+++1m47XXXrvVekuSP//5z/mf//mfzJw5s3yutrY2P//5z/PDH/5wiWqtvvrqzcbvvPPOYs999913M2vWrPJ4rbXWWqJnAwAAAAAAAACwYmhTjYf+/Oc/T5Kst956eeONN/LBBx+kKIo8/PDDefjhh1tUu1QqVWRVpfXXX7+8jVxDQ0PefvvtDwV2Fua1115rNh48eHCr9XXmmWfmj3/8Y7NznTp1yu9+97sMGzZsiettsMEGzcavvvpqdt9998Wa++qrrzYbt+Z7AgAAAAAAAACw/KhKCOkvf/lLSqVSs3OlUmmJVhOqti222CK33XZbefzEE08sdgjpySefLB/36dMna6yxRqv09Mc//vFDAaRevXrl/PPPz6abbrpUNTfbbLO0adMms2fPTjLnPRfXvO+ZJFtvvfVS9QAAAAAAAAAAwPKtKtuxLUypVGrRp5I+85nPNBvfeeedizXv6aefzrhx48rj7bffvlX6ueOOO3LmmWc2O7fqqqvmL3/5y1IHkJKkS5cu2XzzzcvjJ598MhMmTFisufP+mnTq1ClbbbXVUvcBAAAAAAAAAMDyq2ohpKIoWv1TSYMGDWoWzrnvvvvy0ksvfeS88847r9l43333bXEvo0ePzk9/+tMP9Xf11Ve3yipLe+65Z/l49uzZufDCCz9yzj/+8Y+8/vrr5fFuu+2WDh06tLgXAAAAAAAAAACWP1XZju3uu++uxmNb3be//e089dRTSZKmpqYcc8wxufbaa9OzZ88F3n/xxRfn3nvvLY+HDBnSKqsDnXjiiamvry+Pu3XrlgsuuCD9+/dvce0k2WOPPXLmmWeWV0C67LLLsuWWW2aXXXZZ4P1vvPFGTjzxxPK4trY23/72t1ulFwAAAAAAAAAAlj9VCSGtuuqq1Xhsq/vc5z6XrbfeOo899liS5M0338wBBxyQU089NVtuuWX5vilTpuTcc8/NxRdfXD5XW1ub4cOHL7T2DTfc0Oz6qquumnvuuedD9z399NN56KGHmp375je/mdra2rz55ptL/E6rrrpq2rRp/tuiY8eOOfbYY3P88ccnmRO4OvbYY3PsscfmoIMOSrt27ZLMWd3q3nvvzfHHH59JkyaV53/lK1/J4MGDl7gXAAAAAAAAAABWDFUJIX1clEqlnH766TnwwAMzduzYJHOCSAceeGDWXXfdrLXWWpkyZUqeeeaZTJs2rdncY489NkOGDGlxD5deeumHzp199tk5++yzl6re3XffndVWW+1D5/fbb7889thjuemmm5Iks2bNyumnn54LLrggG2+8cdq3b59XXnkl77zzTrN5G264Yf73f/93qXoBAAAAAAAAAGDFIITUQgMHDsxll12W73znO3n77bfL50eOHJmRI0d+6P5SqZSjjz46hx56aIufXRRFHnjggRbXWVy/+tWvUlNTkxtuuKF8btKkSXnwwQcXeP9mm22W888/P+3bt69UiwAAAAAAAAAAVEFNtRv4OFhjjTVy22235YgjjkivXr0Wet9WW22VK6+8MkceeWSrPLeuri5TpkxplVqLo7a2NqeeemouuOCCbLjhhgu9r2/fvjnuuONy9dVXp2fPnhXrDwAAAAAAAACA6rASUivp0KFDfvCDH+Too4/OU089lTfeeCMTJ05MmzZt0r9//wwZMiQDBw5c7Hr77LNP9tlnn0Xe06tXr7zyyistbX2J7bDDDtlhhx3y9ttv59lnn817772XGTNmpGfPnll//fWz4YYbpk0bv7UAAAAAAAAAAFYWkiKtrLa2NltttVW22mqrareyzA0aNCiDBg2qdhsAAAAAAAAAAFSZ7dgAAAAAAAAAAIAWEUICAAAAAAAAAABaRAgJAAAAAAAAAABoESEkAAAAAAAAAACgRYSQAAAAAAAAAACAFhFCAgAAAAAAAAAAWkQICQAAAAAAAAAAaBEhJAAAAAAAAAAAoEWEkAAAAAAAAAAAgBYRQgIAAAAAAAAAAFpECAkAAAAAAAAAAGiRNtVuAAAAAAA+zhqbioyvb1jgtb5dO6S2plThjgAAAABa33IRQnrzzTfz4IMPZuzYsZk6dWpmzZqVpqamFEWxxLVKpVJ+9atfLYMuAQAAAGDJja9vyNBT71ngtRHDh2VA944V7ggAAACg9VU1hPTMM8/k17/+dZ5++ulWqVcUhRASAAAAAAAAAABUWNVCSHfeeWd+9KMfpbGx8UMrHpVKlqAGAAAAAAAAAIAVRVVCSKNHj85xxx2X2bNnJ/lv6GhuGGlptmEDAAAAAAAAAACqoyohpDPPPDMzZ85sFj5q27ZthgwZkrXXXjs9evRI27Ztq9EaAAAAAAAAAACwhCoeQpo5c2buuuuulEqlFEWRUqmUHXfcMb/4xS/Sr1+/SrcDAAAAAAAAAAC0UMVDSI8//nimT59eXgVp4403ztlnn23lIwAAAAAAAAAAWEHVVPqBo0ePTpLyKkhHHXWUABIAAAAAAAAAAKzAKh5CqqurKx+XSqUMHTq00i0AAAAAAAAAAACtqOIhpG7dupWPu3btmnbt2lW6BQAAAAAAAAAAoBVVPITUt2/f8vHUqVNTFEWlWwAAAAAAAAAAAFpRxUNIQ4YMSW1tbZKksbExzz//fKVbAAAAAAAAAAAAWlHFQ0i9evXKJz/5yfL4uuuuq3QLAAAAAAAAAABAK6p4CClJvve976WmZs6jb7jhhjz11FPVaAMAAAAAAAAAAGgFVQkhbbnllvn2t7+doigye/bsfPe73839999fjVYAAAAAAAAAAIAWalOtBx933HEpiiIXX3xxJk+enMMPPzwbbbRRPvvZz2ajjTZKnz590qVLl9TW1i5x7YEDBy6DjgE+WmNTkfH1DQu81rdrh9TWlCrcEQAAAAAAAAAse1UJIR166KHl486dO2fatGkpiiLPP/98XnjhhRbVLpVKefHFF1vaIsBSGV/fkKGn3rPAayOGD8uA7h0r3BEAAAAAAAAALHtVCSE98MADKZWarwZSKpVSFEWKoqhGSwAAAAAAAAAAwFKq2nZsCzJ/MGlJCTABAAAAAAAAAEDlVS2EJDAEAAAAAAAAAAAfD1UJIb388svVeCwAAAAAAAAAALAM1FS7AQAAAAAAAAAAYMUmhAQAAAAAAAAAALSIEBIAAAAAAAAAANAibardwKLMnDkzkyZNSps2bdKpU6d06NCh2i0BAAAAAAAAAADzWa5CSA8//HDuv//+PProo3n99dfT0NDQ7Hrnzp2z+uqrZ8iQIdl+++2z4447plQqValbAAAAAAAAAAAgWU5CSPfee2/OOuusvPzyy0mSoigWeN+UKVPy4osv5qWXXso111yT/v3759hjj82ee+5ZyXYBAAAAAABgpdbYVGR8fcMCr/Xt2iG1NRYSAICVTVVDSE1NTTn99NNz2WWXJflv+OijVjeae9/YsWPzv//7v7n33ntz2mmnpV27dsu2YQAAAAAAACDj6xsy9NR7FnhtxPBhGdC9Y4U7AgCqraohpOOOOy533HFHiqJIqVRKqVRKURQLXQlprnlDSkVR5O9//3umT5+eP/3pT7ZnAwAAAAAAAACACqtaCOn888/P7bff3ix8lCQbbrhhhg0blk033TT9+vVLt27dMnv27EyZMiWjR4/Oiy++mLvvvjuvvPJKs7n33Xdfzj333Bx11FHVeiUAAAAAAAAAAFgpVSWE9O677+bcc88tr1pUFEVWX331nHzyydlmm20WOm+DDTbIzjvvnO9///t59NFHc+KJJ+bNN98sB5EuuOCCfOlLX8pqq61WqVcBAAAAAAAAAICVXk01HvrHP/4xM2fOLI833XTT3HjjjYsMIM1vm222yU033ZQhQ4aUV1GaNWtWLr300tZuFwAAAAAAAAAAWISKh5CKoshdd91VXr2oW7duOe+889K5c+clrtWxY8f86U9/So8ePcr17rjjjnIoCQAAAAAAAAAAWPYqHkJ6/vnnU1dXlyQplUo59NBD06tXr6Wu17Nnzxx66KHl4FFdXV1eeumlVukVAAAAAAAAAAD4aBUPIb3xxhtJUg4N7bbbbi2uObdGqVRKkrzyyistrgkAAAAAAAAAACyeioeQ3n///fJxu3btsuqqq7a45sCBA9OuXbvyeOLEiS2uCQAAAAAAAAAALJ6Kh5BmzpxZPp43ONRS7du3Lx83NTW1Wl0AAAAAAAAAAGDRKh5C6tmzZ/l4ypQpmTZtWotrTps2LfX19Qt8BgAAAAAAAAAAsGxVPIQ0YMCAZuOHH364xTXn1iiKIknSt2/fFtcEAAAAAAAAAAAWT8VDSEOGDEltbW1KpVKS5OKLL25xzYsuuqh8XFtbmy222KLFNQEAAAAAAAAAgMVT8RBSly5dsuWWW6YoihRFkaeeeip//vOfl7reBRdckKeeeiqlUimlUilDhgxJly5dWrFjAAAAAAAAAABgUSoeQkqSgw8+OElSKpVSFEV+//vf5+yzz05TU9Ni12hqaspZZ52VM844o1wnSb797W8vk54BAAAAAAAAAIAFq0oIaccdd8y2226boijKAaI//vGP2WOPPXLVVVfl3XffXejcsWPH5sorr8wee+yRP/3pT+Xw0dxVkD772c9W6jUAAAAAAAAAAIAkbar14NNPPz177rlnPvjgg3IQadSoUTn55JNz8sknp1evXunfv3+6du2aoihSX1+fd999N3V1dUnSLHxUFEX69OmTP/zhD9V6HQAAAAAAAAAAWGlVLYTUr1+/XH311TnkkEMyduzYlEqlJP8NF73//vt5//33P3R+rnnP9+vXL3/605/Sr1+/Cr4BAAAAAAAAAACQVGk7trnWWWedXHvttdl5551TFEV5e7Z5P3PNf37u/TvuuGNuvPHGbLjhhlV8EwAAAAAAAAAAWHlVbSWkufr27ZtzzjknL7zwQi677LKMGDEi77333iLn9OrVK9ttt12+9a1vCR8BAAAAAAAAAECVVT2ENNdGG22U008/PUkyatSovP7666mrq8ukSZNSFEV69OiRHj16ZN11183aa69d5W4BAAAAAAAAVk6NTUXG1zcs8Frfrh1SW1Na4DUAPt6WmxDSvNZZZ52ss8461W4DAAAAAAAAgPmMr2/I0FPvWeC1EcOHZUD3jhXuCIDlwXIZQgIAAAAAAADg48HKSQArh+U6hDRlypRMmzYtbdq0SZcuXdKuXbtqtwR8DPhGFwAAAAAAoHKsnASwcliuQkiPPPJI7r333jz++ON5/fXXM3369GbXe/funcGDB+eTn/xkPve5z2WttdaqUqfAisw3ugAAAAAAAADQupaLENJf//rXnHfeeRk7dmySpCiKBd43YcKEvP/++3nkkUfyhz/8Idtuu21++MMfZtNNN61kuwAAAAAAAAAAwDxqqvnw9957L1/72tfys5/9LGPGjElRFCmKIqVSaaGfJOX7HnnkkXzlK1/J6aefnqampmq+CgAAAAAAAAAArLSqthLSuHHj8vWvfz3vvPNOOXiU/Ddg9FHm3t/U1JRLLrkkY8aMye9///vU1FQ1VwUAAAAAAAAAACudqoSQiqLIMccck7fffru8wtHcINK2226b7bffPhtuuGH69OmTrl27Zvbs2ZkyZUrefffdvPjii7n//vvz9NNPN5t755135uyzz84xxxxTjVcCAAAAAAAAAICVVlVCSH/729/KIaJkTihp6623zi9+8YusvfbaC523/vrrZ8cdd8z3vve9vPzyyznhhBPy/PPPl4NIF1xwQb7whS9k3XXXrdSrAAAAAAAAAADASq8qe5ddeuml5eBQknzpS1/K5ZdfvsgA0vzWX3/9XHvttfnsZz9bXkWpqakpf/rTn5ZV2wAAAAAAAAAAwAJUPIQ0atSojBo1qjxef/3186tf/aq8KtKSqK2tzRlnnJE11lgjyZwVle66665MmTKl1foFAAAAAAAAAAAWreIhpOeffz5JyqsXHXXUUampWfo22rVrl6OOOqq8qtKsWbPy5JNPtkqvAAAAAAAAAADAR6t4CGnChAnl41KplO23377FNYcNG1aulyRvvvlmi2sCAAAAAAAAAACLp+IhpHm3XevatWvatWvX4pqdO3dOt27dyuPp06e3uCYAAAAAAAAAALB42lT6gf379y8f19fXZ+bMmS0OIhVFkWnTppXHffr0aVE9AAAAAAAAqquxqcj4+oYFXuvbtUNqa0oLvAYAQHVUPIS03nrrlY+Losj999+fnXfeuUU1n3vuucyePTvJnJWWBg8e3KJ6AAAAAAAAVNf4+oYMPfWeBV4bMXxYBnTvWOGOAABYlIpvx7bOOutk0003TalUSlEUOfPMM8sBoqV12WWXJZkTQFp77bWz8cYbt0arAAAAAAAAAADAYqh4CClJjj322JRKpZRKpYwcOTLHH398iqJYqlq33nprbr/99vL4qKOOaq02AQAAAAAAAACAxVCVENLQoUNz7LHHloNHt9xySw499NCMGzduiepccsklGT58eJI5qyDtscce2W233Vq9XwAAAAAAAAAAYOHaVOvBhx56aHr27Jlf/OIXmT17dh566KF8/vOfz6677prPf/7z2WSTTbLKKqs0mzNr1qy89tpreeSRR/K3v/0tr7/+eoqiSKlUyjrrrJO99947jz322GI9f+utt14WrwUAAAAAAAAAACudqoSQdtxxx/JxTc2cxZiKokhDQ0Nuvvnm3HzzzUmSDh06pGvXrmnbtm2mTJmSqVOnprGxsXx/MmcFpKIoMmrUqBx88MGL9fxSqZQXX3yxFd8IAAAAAAAAAABWXlUJIb377rvl8FCpVEqS8n/nhouSZPr06Zk+ffoCa8y9f+7xvPMAAAAAAAAAAIDKqdp2bEnzINGizi1trQURVgIAAAAAAAAAgNZVlRDSwIEDq/FYAAAAAAAAAABgGahKCOmee+6pxmMBAAAAAAAAAIBloKbaDQAAAAAAAAAAACu2qqyEBMAcjU1Fxtc3LPBa364dUltTqnBHAAAAAAAAALDkhJAAqmh8fUOGnrrgLSpHDB+WAd07VrgjAAAAAAAAAFhytmMDAAAAAAAAAABaRAgJAAAAAAAAAABokapsxzZ8+PBlVrtUKuVXv/rVMqsPAAAAAAAAAAA0V5UQ0o033phSqdTqdYuiEEICAAAAAAAAPnYam4qMr29Y4LW+XTuktqb1//4VAJZEVUJILVEUxQLPL4tQEwAAAAAAAMDyYHx9Q4aees8Cr40YPiwDunescEcA0FzVQkgLCxMtjvkDR0VRtKgeAAAAAAAAAACw9KoSQjrqqKOWeM6sWbMyffr0jB8/Pi+//HLeeOON8rW+ffvmnHPOyVprrdWKXQIAAAAAAAAAAItjhQkhzW/kyJE5+eST88gjj+S9997Ld7/73Vx88cVZf/31W6FDAAAAAAAAAABgcdVUu4Glte666+bSSy/Nvvvum6IoMnHixPzwhz/MjBkzqt0aAAAAAAAAAACsVFbYENJcP//5z7PuuusmSV5//fWcd955Ve4IAAAAAJZOY1ORsZOnL/TT2FRUu0UAAACABarKdmytqW3btjnooIPys5/9LEVR5Prrr8/3v//9lEqlarcGAAAAAEtkfH1Dhp56z0Kvjxg+LAO6d6xgRwAAAACLZ4UPISXJzjvvnJ/97GdJkvfeey9PPfVUtthii4r3MWnSpFx//fV54IEH8tprr2Xy5Mnp0qVL+vfvnyFDhmSfffbJpptuWvG+5nr22Wfz5S9/OUVR5KijjsrRRx+9RPMffvjhfPvb317q5z/22GPp1q3bUs8HAAAAAAAAAGD59LEIIfXu3TsdO3bM9OnTkyRvv/12xUNI1113XU499dRMnTq12fm6urrU1dXlpZdeyjXXXJPPfvazOeWUU9KzZ8+K9jdjxoyccMIJKYqlX7L7lVdeacWOAAAAAAAAAAD4uKipdgOtoSiKzJ49u7wF23vvvVfR559xxhk54YQTPhRAWpC77747e++9d8aNG1eBzuYoiiLHH398i0NEQkgAAAAAAAAAACzIx2IlpDfffDOzZs0qh5A6duxYsWffdNNNOe+885qd23XXXbPnnntm0KBBmTx5ch588MFcc801mTx5cpJk7NixOeqoo3LVVVelXbt2y7S/oihy0kkn5dZbb21xrXlDSJtuuml++9vfLtH8Ll26tLgHqIbGpiLj6xsWeK1v1w6prSlVuCMAAAAAAAAAWL58LEJIV155ZZI5gZtSqZR+/fpV5LkTJ07MySefXB7X1NTkt7/9bb7whS80u2/rrbfOl7/85Rx++OF57bXXkiTPPvtsLr/88hxyyCHLrL8pU6bk+OOPz9///vcW12psbMyoUaPK4w022CBrrLFGi+vCimB8fUOGnnrPAq+NGD4sA7pXLvgIAAAAAAAAAMujFX47tptuuinXXHNNeRWkmpqabLHFFhV59oUXXpj6+vry+Oijj/5QAGmuVVddNRdccEF69uxZPvfnP/85U6ZMWSa9vfbaa9lvv/1aJYCUJK+//npmzJhRHq+33nqtUhcAAAAAAACorsamImMnT1/op7GpqHaLAKwAqrIS0pgxY5ZqXlNTU2bMmJH6+vq89dZbufnmmzNixIg0NTUlSUqlUrbccsv06tWrNdtdoJkzZ+b6668vj3v37v2RqxoNHDgwRxxxRH71q18lSSZNmpTbb789BxxwQKv1NW3atFx44YW56KKL0tDw3+2jamtr09jYuNR1592KLUkGDx681LUAAAAAAACA5ceidoVI7AwBwOKpSghp2LBh5ZWLWmruFmxFMSd9e+SRR7ZK3Y8yYsSITJo0qTzefffd065du4+ct/fee+f000/P7NmzkyR33nlnq4WQbr/99px66ql57733mp1fd9118+1vfzvHH3/8UtcWQgIAAAAAAAAAYGGqth1bURQt/iRpFmbaf//9s+2221ak/4cffrjZePvtt1+sed26dcumm25aHv/73/9utS3Z/vKXv3wogLT//vvn2muvzaBBg1pUe94QUp8+fZptKwcAAAAAAAAAwMqtaiGkUqnU4s/cMFJtbW2++c1v5he/+EXF+n/hhReajTfZZJPFnrvxxhuXj2fPnp3nn3++1fqaa911182ll16ak08+OV26dGlxvXlDSFZBAgAAAAAAAABgXlXZji1JeSWjJVUqldKuXbt069Ytq6++ej71qU/li1/8YtZYY41W7nDRRo0aVT7u2bNnevXqtdhz11xzzQ/V+uQnP9kqfQ0aNCiHH3549tlnn9TW1rZKzQ8++CBjx44tj+cPIc2cOTN1dXWpra1Nz549W+25AAAAAAAAAACsGKoSQnr55Zer8dhW09DQkIkTJ5bHAwYMWKL5/fr1azYePXp0q/Q1fPjwrL/++qmpad0FruZdBSmZE0IaP358/va3v+Wf//xnXn755TQ2NiZJampqstFGG2XYsGE58MAD06NHj1btBVg+NDYVGV/fsNDrfbt2SG1NaaHXAQAAAAAAAPh4qdpKSCuyCRMmNBv37t17iebPv2pSXV1di3tKkg033LBV6sxv/hDS/fffn5NPPjkNDR8OIDQ1NeW5557Lc889l0suuSTHHXdcvvzlLy+TvoDqGV/fkKGn3rPQ6yOGD8uA7h0r2BEAAAAAAAAA1SSEtBQ++OCDZuMuXbos0fzOnTs3G9fX17e4p2Vp/hDSP/7xj8Wa98EHH+TEE0/Mq6++mhNOOGGpnj1mzJiMGTNmqebO3zcAAAAAAAAAAMuGENJSmDlzZrNxhw4dlmh+u3btFllvebOgMM8qq6ySAw44IJ/73Oey2mqrpVQqZcyYMbn//vtz6aWXZvz48eV7r7jiivTr1y+HHnroEj/7+uuvzznnnNOi/gEAAAAAAAAAWLaW2xDSxIkTM2nSpEyePDlt2rRJp06d0qdPn3Tr1q3arWXWrFnNxrW1tUs0v02b5r/ss2fPbnFPy0pRFHnttdeandtpp53y61//Oj169Gh2fvDgwRk8eHC+8pWv5Ec/+lHuvffe8rXf//732WmnnbLuuutWom0AAAAAAAAAACpouQkhzZw5MzfffHPuv//+PPbYY5k8efIC7+vWrVuGDBmS7bffPnvttVe6du1a4U6TUqnUbNzU1LRE8+e/f0lDTJU0bdq07LXXXnn77bfzzjvvZMCAATn77LPTtm3bhc7p3LlzzjrrrHzta1/Ls88+m2TOO5911lk566yzKtU6AAAAAAAAAAAVslyEkK666qr86U9/yvvvv59kzuo7CzN58uTcf//9uf/++/O73/0uhx12WA499NAPrS60LM2/ndqSrmQ0//3z11uedO7cOT//+c+XeF67du1ywgkn5Mtf/nL53L333pvp06enY8eOi11n3333zdChQ5f4+cmcbeROOumkpZoLAAAAAACsOBqbioyvb1jo9b5dO6S2prTQ6wAAtFxVQ0hTp07N8OHDc9ddd5WDR6VS6UMrDS1IURSZPn16zjrrrDz44IM599xzP7Q92LLSuXPnZuPp06cv0fxp06Y1G3fo0KHFPS2PNttss6yzzjoZNWpUkjmrXT3xxBPZbrvtFrvGwIEDM3DgwGXVIgAAAAAA8DEwvr4hQ0+9Z6HXRwwflgHdF/8fSQMAsORqqvXgxsbGHHnkkeUA0tzwUVEUzT4LOjf//U8++WQOO+ywzJgxoyK99+zZs9n4gw8+WKL59fX1zca9e/ducU/Lq80226zZeMyYMVXqBAAAAAAAAACAZaVqKyH9+te/ziOPPNIsTFRbW5thw4bls5/9bDbZZJP069cvXbp0SVNTU6ZMmZIxY8bkhRdeyD//+c/cf//9aWxsLM997rnncvrpp+fEE09c5r337Nkz7du3L4eeJkyYsETz579/lVVWabXeljfzB6zq6uqq1AkAAAAAAAAAAMtKVUJIo0aNytVXX13edq0oimy++eY5/fTTM2jQoA/dX1NTk27duqVbt25Zf/31s+++++btt9/O8OHD8/jjj5eDSNdcc00OOOCAfOITn1im/ZdKpQwaNCgjR45MkowePbq8OtPiePvtt5uN11577VbvcXnR2NjYbPxx3XoOAAAAAAAAAGBlVpXt2P74xz82C6fsuOOOufLKKxcYQFqYQYMG5fLLL8/OO+/cbNu2Sy65ZFm0/CHrr79++bihoeFDwaJFee2115qNBw8e3Gp9tba6urq8+uqrGTFiRG677bZMmjRpiebPv+pTr169WrE7AAAAaD2NTUXGTp6+wE9jU1Ht9gAAAABguVbxlZBmz56df/3rX+XQUP/+/XPGGWektrZ2iWvV1NTkt7/9bXbfffeMHTs2RVHkrrvuykknnZS2bdsug+7/a4sttshtt91WHj/xxBNZffXVF2vuk08+WT7u06dP1lhjjVbvr7UMHz489957b3n8hz/8Ibvttttiz3/mmWeajTfZZJNW6w0AAABa0/j6hgw99Z4FXhsxfFgGdO9Y4Y4AAAAAYMVR8ZWQnnnmmUydOjXJnG3NDj/88HTsuPQ/xOvQoUMOO+ywFMWcf5E4derUvPDCC63S66J85jOfaTa+8847F2ve008/nXHjxpXH22+/fav21drmXfEpSe65Z8E/jF2QZ555Jm+++WZ5vOqqq2bNNddsrdYAAAAAAAAAAFhOVDyENHfbsrmhoZ133rnFNXfZZZckc0JNyYe3O1sWBg0alM0337w8vu+++/LSSy995Lzzzjuv2Xjfffdt9d5a0/z/f+68886MHj36I+c1NTXlt7/9bbNzX/3qV1u1NwAAAAAAAAAAlg8VDyHV1dWVjzt06JA+ffq0uGbv3r2braY0adKkFtdcHN/+9rfLx01NTTnmmGOavd/8Lr744mZbmw0ZMiRbbbXVMu2xpTbeeONsuumm5fGMGTNy3HHHZcaMGQudUxRFTj755Dz66KPlc3379s1XvvKVZdorAAAAAAAAAADVUfEQUmNj438fXtN6j5+3VmvWXZTPfe5z2XrrrcvjN998MwcccECeeOKJZvdNmTIlp512Wk477bTyudra2gwfPnyhtW+44Yast9565c+wYcNa/wUW009/+tPU1taWx0888US++tWv5plnnvnQvSNHjswhhxySq666qnyuVCrl5JNPTteuXSvSLwAAAAAAAAAAldWm0g/s2bNn+XjatGmZPHlyunfv3qKakydPztSpU8vbsfXq1atF9RZXqVTK6aefngMPPDBjx45NMieIdOCBB2bdddfNWmutlSlTpuSZZ57JtGnTms099thjM2TIkIr02VKbbLJJfvGLX+SEE04on3vhhRfy5S9/OWuuuWYGDx6coijy5ptvfmgrvFKplJNOOik77LBDpdsGAAAAAAAAAKBCKh5CWm211ZqN77///uyxxx4tqnnfffclmbMNWKlUSv/+/VtUb0kMHDgwl112Wb7zne/k7bffLp8fOXJkRo4c+aH7S6VSjj766Bx66KEV67E17L///mnfvn1+/vOfZ+rUqeXzb7zxRt54440FzunevXtOPPHEFv//BQAAAAAAAABg+Vbx7diGDBmStm3bplQqpSiKnH/++Wlqalrqeo2NjbngggvKqyC1a9cuW2yxRWu1u1jWWGON3HbbbTniiCMWuQrTVlttlSuvvDJHHnlkBbtrPXvuuWduvfXWfO1rX0unTp0Wel+vXr1y4IEH5v/+7/8EkAAAAAAAAKqksanI2MnTF/hpbCqq3R4A8DFT8ZWQ2rdvn+222y733ntvkmTUqFH51a9+1WyrryXxq1/9KiNHjkypVEqpVMq2226b9u3bt2bLi6VDhw75wQ9+kKOPPjpPPfVU3njjjUycODFt2rRJ//79M2TIkAwcOHCx6+2zzz7ZZ599Wq2/bbfdNq+88kqL66y66qr56U9/muHDh+f555/PyJEjM2nSpNTU1GSVVVbJoEGDstlmm6W2trYVugYAAAAAAGBpja9vyNBT71ngtRHDh2VA944V7ggA+DireAgpSb7zne/k3nvvLa+GdNVVV2XKlCk54YQT0qVLl8WqMWXKlJx88sm5+eaby3VKpVIOO+ywZdz9otXW1marrbbKVlttVdU+lrW2bdtm8803z+abb17tVgAAAAAAAAAAqLKqhJC22mqr7Lrrrvn73/9eDhDdfPPNue+++7L33ntn2LBh2WijjdKxY/P09bRp0/Liiy/m7rvvzo033pjJkyenKOYsFVkqlbLTTjt97MM/wMqrsanI+PqGhV7v27VDamtKFewIAAAAAAAAAOaoSggpSU466aS88MILefvtt8tBpLq6ulxyySW55JJLUiqV0q1bt3Tt2jVFUaS+vj719fXl0NG84aOiKLLWWmvl9NNPr9brACxzi1o2N7F0LgDAykxgHQAAAACotqqFkLp165arr746hx12WF566aWUSnN+GDpvyGjSpEmZNGnSAufPe//666+fc889d7G3cgMAAICPE4F1AABYdoT+AQAWT9VCSEnSp0+fXHnllTnrrLPyl7/8JTNmzEjy34DRohRFkbZt2+aAAw7Icccdl/bt2y/rdgEAAAAAAFjJCP0DACyeqoaQkqRz584ZPnx4Dj744Fx77bV5+OGH89xzz6WxsXGB97dp0ybrrbdePvOZz+TAAw9Mnz59KtwxAAAAAAAAAAAwr6qHkObq169fvv/97+f73/9+pkyZkrfffjuTJk1KXV1dkqR79+7p0aNH1l577XTsKE0OAAAAAAAAK4pFbWtnSzsA+HhYbkJI8+rSpUs22GCDarcBAAAAAAAAtIJFbWtnSzsA+HioqXYD83rrrbcyY8aMRd7z+OOP5+yzz84jjzxSoa4AAAAAAAAAAIBFqfpKSDNmzMi1116bq666Km+99VauvvrqbL755gu9/8knn8y5556bUqmUVVddNQcffHAOPPDACnYMwIrMkr8AAAAAAAAAra+qIaSXX345P/zhD/P666+nKIqUSqW8/vrriwwhvfPOO0mSoijyzjvv5Je//GVuvfXWnHPOOendu3elWgdgGVqWQSFL/gIAAAAAAAC0vqqFkF5++eV885vfzAcffJCiKMrn33jjjUXOmxtCKpXm/AV0URR56qmnctBBB+WKK64QRAL4GBAUAgAAAAAAAFix1FTjoTNmzMj3v//9TJ48Ocl/A0W1tbWpra1d5Nz99tsv++yzT7p161ZePSlJXn/99fzP//zPsm0cAAAAAAAAAAD4kKqshHTppZfmrbfeSqlUSlEUqampyTe+8Y0cfvjh6dWr1yLn7r777tl9990zc+bMXHLJJTn77LPT2NiYoijy8MMP54477sjuu+9eoTcBoNqW5dZtAAAAAAAAACyeqoSQrr322mYBpN///vfZddddl6hGu3btcvjhh2edddbJ0UcfXa534YUXCiEBrERs3QYAAAAAAABQfRXfjm3UqFEZM2ZMkjnbsH35y19e4gDSvHbeeefsu+++KYoiSfLSSy9l3LhxrdIrsGJobCoydvL0hX4am4pqtwgAAAAAAAAAH2sVXwnphRdeSJIURZFSqZSDDjqoxTUPPPDA/O1vfyuPn3rqqRYFm4AVy6JWwkmshgMAAAAAALCiaGwqMr6+YaHX+3btkNqaUgU7AmBxVTyENHHixPJxhw4dss4667S45gYbbJC2bdtm9uzZSZL33nuvxTUBAAAAAAAAqCz/+BxgxVXxEFJDw39Tq23btm2VmqVSKZ06dcrkyZNTKpUyffr0VqkLAAAAAADAx8+iVlqxygoAwNKpeAipS5cu5eP6+vrMmDEj7du3b1HNxsbG1NfXp1Sa8w1h9+7dW1QPAAAAAACAj69FrbRilRUAgKVTU+kHDho0qNn4kUceaXHNp556Kk1NTSmKIkmyyiqrtLgmAAAAAAAAAACweCq+EtImm2ySmpqacmDo0ksvzQ477NCimldddVX5uFQqZfPNN29RPQAA4ONjUUvsJ5bZBwAAAACA1lDxEFKvXr2y+eab54knnkgyZyWkK664IgcddNBS1bvjjjvyf//3f+Wt2DbccMP06tWr1foFAABWbItaYj+xzD4AAAAAALSGim/HliRf+9rXksxZtagoipx66qk555xz0tjYuER1rrrqqvzv//5vuU6SfOtb32rtdgEAAAAAAAAAgEWo+EpISbLbbrvlkksuyfPPP59SqZSmpqace+65ufnmm7PffvvlU5/6VNZbb720a9eu2bxZs2Zl5MiReeSRR3LDDTdk5MiRKYoipVIppVIpG264Yb74xS9W45UAWIRFbYNjCxygEmzHBQAAAAAAsGxVJYRUKpXy61//OgceeGA++OCD8kpGb7/9dv7whz/kD3/4Q2pra9O1a9d06dIlSTJ16tR88MEH5dWS5q58NHfuKquskrPPPrsarwPAR1jUNji2wAEqwXZcAAAAAAAAy1ZVQkhJss466+TPf/5zvve972XChAkpleb8y/O54aLZs2enrq4udXV1C5w/7/0DBw7MOeeck4EDB1ameQBYzll9CgAAAAAAAKikqoWQkmTTTTfNTTfdlFNPPTV33HFHeWu1xVEURWpqarL77rvnZz/7Wbp167aMuwVaQiACKsvqUwAAAAAAAEAlVTWElCSrrLJKfve73+Xoo4/OjTfemH/961959dVXyysiza+mpibrrLNOPv3pT+drX/taBg0aVOGOgaUhEAEAfFwJWwMAAAAAwHIQQpprzTXXzLHHHptjjz02U6dOzRtvvJFx48Zl2rRpKZVK6datW7p375611147Xbp0qXa7AAAASYStAQAAAAAgWY5CSPPq3LlzNtpoo2y00UbVbgUAAABYhqwmBgAAAAAfD60aQjr55JOz/fbbZ5tttknHjv61LwAAALBoVhODlhHkAwAAAJYXrRpCuvLKK3PVVVelTZs22XzzzbPddttl++23zwYbbNCajwEAAAAAIsgHAAAALD+WyXZss2bNymOPPZbHHnssZ5xxRnr16pVPfepT2W677bLddtuld+/ey+KxAAAAAAAAAABAFbRqCGmHHXbIo48+munTp6coivL5999/P7fddltuu+22JMn666+fT3/609luu+2y5ZZbpm3btq3ZBgAAAAAAAAAAUEGtGkI6//zzM2vWrDz55JN58MEH8+CDD+bll19OURTNQkkvv/xyXn755Vx00UXp0KFDtt1223Ioaa211mrNlgAAAFYKjU1Fxtc3LPR6364dUltTqmBHAAAAsHxa1J+h/fkZAJZeq2/H1rZt22y77bbZdttt86Mf/Sjvv/9+OZA0YsSITJgwoVkgafr06bnvvvty3333JUkGDBhQ3rZt6NCh6dq1a2u3CAAA8LEzvr4hQ0+9Z6HXRwwflgHdO1awIwAAAFg+LerP0P78DABLr9VDSPPr3bt39tprr+y1115JkpdeeikPPPBAHnzwwTz11FOZNWtWs1DSmDFjct111+W6665LbW1tNtlkk3IoadNNN02pJHkMAAAAAAAAAADLk2UeQprfBhtskA022CCHHXZYpk2bln//+9/llZLefPPNJCmHkmbPnp2nn346Tz/9dM4555x069YtQ4cOLYeS+vfvX+n2AQAAAAAAAACA+VQ8hDSvTp06ZaeddspOO+2UJHnnnXfKgaRHHnkkU6ZMabZK0uTJk3PnnXfmzjvvTJKsvfba5UDSNttsk/bt21flPQAAAAAAAAAAYGVW1RDS/FZbbbV85StfyVe+8pU0NjbmqaeeyoMPPpiHHnooL7zwQpqampqFkv7zn//kP//5Ty6//PK0a9cuW265Zbbbbrt8+tOfznrrrVfFNwEAAAAAAAAAgJXHchVCmldtbW222mqrbLXVVvnBD36QSZMm5eGHH84DDzyQhx56KOPHj28WSJoxY0ZGjBiRESNG5Le//W1efPHFKnYPAACw8mpsKjK+vmGh1/t27ZDamlIFOwIAAAAAYFlbbkNI8+vRo0d233337L777kmSV199tbxK0uOPP54ZM2Y0CyUBAABQHePrGzL01HsWen3E8GEZ0L1jBTsCAAAAAGBZW2FCSPP7xCc+kU984hM5+OCDM2PGjDz66KN58MEH88ADD+T111+vdnsAAAAAAAAAALDSWGFDSPNq3759tt9++2y//fYZPnx4xo0bV+2WAACAFdSithKzjRgAAAAAACzYxyKENL9+/fpVuwUAAGAFtaitxGwjBtW1qJBgIigIi0PYFgAAAFhWPpYhJAAAAGDhlmUIYVnWXlRIMBEUhMUhbAsAAAAsK60aQrrppptas9xS+9KXvlTtFgAAAGC5tSxDCAIOAAAAALByatUQ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FlzPwxUBAAAAzvNKCOn999+XYRh25wzDsEJFKSkp2rhxozZu3FhqbFGfojFF59LT05WWllah+5e8NwAAAAAAAAAAAAAAAIDK80oIqSwVCQc56lN0riLji4eY3C01NVXLly/Xf//7Xx08eFBpaWkKDAxURESEYmJiNGjQIHXp0qXK7l/cnj17tHz5cm3ZskXx8fHKyclReHi4IiMjdf3116t///5q3LixU3Nu2rRJ9913X6Vr2rx5sxo2bFjp8QAAAAAAAAAAAAAAAKievBZCqsowkDcsW7ZMsbGxysrKsjufkpKilJQU7du3T4sXL9b111+vf/3rXwoNDa2SOtLT0/XPf/5TX3zxRalrJ0+e1MmTJ7V582a9/vrrGj9+vP7yl79UeO4DBw64s1QAAAAAAAAAAAAAAOBFhTZTiRk5Dq+FBwXI14edplBxXgkhLViwwBu3rTKvv/66ZsyYUaG+a9eu1d69e7V06VI1bdrUrXWkpKRo1KhR2r9//wX75ubm6vnnn9e+ffv0r3/9q0LzE0ICAAAAAAAAAAAAAODikZiRo56x6xxei5vQV82C63m4ItRkXgkh/fGPf/TGbavEihUrSgWQbr75Zt1+++2KiopSWlqafvjhBy1evFhpaWmSpFOnTunRRx/VokWL5O/v75Y6bDabnnjiCbsAUnBwsP7yl7/o6quvVlBQkI4fP64VK1bom2++sfp8/PHHateunUaNGnXBexQPIXXp0kXTp093qsbAwECn+gMAAAAAAAAAAAAAAKBm8Np2bBeD5ORkTZs2zWr7+Pho+vTpuu222+z69ejRQ0OGDNGYMWN08OBBSdLOnTu1YMECjR492i21LF++XBs3brTarVq10vz58xUREWGda9++vW644QatWrVK48ePV0FBgSTp1Vdf1c0332zXt6TCwkIdPnzYanfs2FEtW7Z0S+0AAAAAAAAAAAAAAACo2Xy8XUBNNmfOHGVkZFjtsWPHlgogFWnevLlmzZql0NBQ69zs2bOVmZnpch35+fl66623rHbdunU1c+bMMkNFt912m5555hmrnZeXp3fffbfcexw9elS5ublWu3379i5WDQAAAAAAAAAAAAAAgIsFIaRKysvL0/Lly612o0aNLriqUWRkpB5++GGrnZqaqlWrVrlcy9q1a5WYmGi1hwwZolatWpU75u6771anTp2s9ooV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9VYtXLhQf//73615vvvuOy1ZssRjz9GhQwfrOCcnp1SwqDwHDx60axc9a2Vceuml1upRjuYuT1ZWlk6ePFluHR07drRr//LLLxWev2RfV54TAAAAAAAAAAAAAAAA1ZfHQ0jFQzKGYei+++5To0aNSvWLiYmxjv/3v/+Vum4Yhv76179q1KhRks4HkV577TWlpqa6u2SHLr/8crv21q1bKzz2559/to6bNGmili1bVrqOgIAAu6DQnj17lJOTU6Gx27dvl81ms9o9evQo1adr1652IafKPmdZ8wMAAAAAAAAAAAAAAKDm83gIqfgqSJJ04403OuxXPFizY8eOMud78skn1aZNG0lSRkaGFi5c6K5Sy/WnP/3Jrr1mzZoKjdu+fbsSEhKs9rXXXuvWWnJycrRhw4YKjStZs6NaAgMD1a1bN6v9888/Kykpyen569evr+7du1doHAAAAAAAAAAAAAAAAGoWj4eQsrOzrWNfX19FR0c77Fe0dZdpmjp8+LDy8vIc9vP19dXdd99ttT///HM3Vlu2qKgou3DOhg0btG/fvguOmzFjhl178ODBLtfSv39/u/bs2bPtVjhy5PTp0/rss8+sdsuWLcsMCd1+++3WcUFBgebMmXPBmr7++msdPXrUat9yyy0KCAi44DgAAAAAAAAAAAAAAADUPB4PIRmGYR0HBQWV2a9Vq1bWcWFhoY4dO1Zm3969e0s6H1j67bffFB8f73KdFXHfffdZxzabTY899phSUlLK7D9v3jytX7/easfExLhldaDo6Gj16dPHau/atUsvvvhimf1zcnI0duxYnTt3zjp3//332/23Ka5///5q3Lix1Z4/f76++eabMuc/duyYJk+ebLV9fX3tfq8AAAAAAAAAAAAAAABwcfF4CCkkJMQ6LigoKLNfkyZNVLduXat95MiRMvs2b97cru/u3btdK7KCbrrpJvXo0cNq//rrrxo6dKi2bt1q1y8zM1MvvfSSXnrpJeucr6+vJkyYUObcn3zyidq3b2999O3bt9xannzySfn7+1vt+fPna/z48UpOTrbr98svv2jEiBHauXOnda5Dhw666667ypy7Xr16GjdunNW22WwaN26c5s6da7dClWmaWrdunYYPH67U1FTr/LBhw6yVrQAAAAAAAAAAAAAAAHDx8fP0DYODg63jrKws5ebm2gWIimvevLkV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qv7zAFxseIeWrTa+Q9PS0tS/f38lJCRY50JDQ3X33XerZ8+eCg0NVXJysjZt2qSPPvpIqampVr+uXbtq4cKFrCgHuAnv57LVxvfzhZw9e1Z//vOfSwVICSEBFcM7t2y19Z27f/9+3XHHHVb7iSeeUL9+/SpcX/369dWkSZOKPxAAh3g/l622vp/j4+M1dOhQuwBScHCwRo4cqcsvv1zh4eE6ffq0vvrqK3366ad2/926d++uhQsXlpltAFAxbg8hrV69Wn//+9/PT14iIFTq5v//etEKRn369Ckz+b1lyxY99dRTOn36tNW/+Nx169bVI488ogceeMAtS9wBlTFmzBh99913VjsmJkbvvPNOmV9MbNiwQY8//rjd/2inTZumu+66q1TfTZs26b777rPajRo10gcffKBLL720VN///e9/euSRR5SVlWWdW7ZsmdN7miYlJWncuHEOE9LOfrLz1ltv6d1337Xal1xyiWbMmKF27dqV6puQkKDRo0fbLWU7ZMgQPf/8807VXxHDhw/Xzz//bLVHjhypCRMmlPqEMycnR//4xz/01VdfWed69+6tWbNmOX3P5cuX65///GepZS8JIQFVh/dz2Wrj+7kq/zwAFyPeoWWrje/Qktv4XHbZZZo5c6bDf5hMSEjQ/fffr0OHDlnnHnvssVKrcACoHN7PZauN7+cLeeihh7R+/fpS5wkhARXDO7dstfWdu3LlSo0fP95qL126VDExMe4pHkCF8X4uW219P48cOdLu969Xr156/fXXHe7I5GgVrenTp6t///5OPxeA3/m4c7KCggJNnz5dkn3AqFGjRnrggQf05ptvavbs2Xr++ed1++23q06dOlagyDRNrV+/Xhs3biw177vvvqt7771Xp06dchhA6tmzpz7//HONGTOGABK8Zt++fXaf6DRr1kwzZ84s96cZevfurRdffNHu3Pvvv++w72uvvWYdG4aht956y+EnOpJ01VVX2fWXpDfeeOMCT2Bvy5YtGjBggFNLNJbl9OnTmjNnjtUOCQnRBx984PATHUlq2rSp3nvvPdWpU8c69/nnnyszM9PlWorbsGGD3Sc611xzjSZOnOgw8R4QEKBXXnlFl19+eZnjLyQ3N1eTJk3SM888c8F9dwG4D+/nstXG93NV/3kALja8Q8tWG9+hiYmJWrlypdUOCgrS+++/X+ZPRjZt2lTvvPOO3TMvWrTI7qcMAVQO7+ey1cb384UsXbrUYQAJQMXwzi1bbX7nHjhwwDo2DENt27Z1Q+UAnMH7uWy19f381Vdf2f3+devWTe+//77DAJJ0fuWjKVOm2J1bsmRJhZ8HgGNuDSHFxcUpPj7eChVJ0oABA/TNN9/oqaeeUr9+/XTttdfqrrvu0ssvv6xvvvlGXbt2tQsWzZs3z27OKVOm6J133lFhYaEMw7ALN4WEhOjFF1/Uv//9b5eWIwbc4csvv7RrP/TQQwoJCbnguH79+qlbt25W++TJk9q/f79dn127dmnXrl1Wu0+fPhfci/W6667TDTfcYLU3btyoo0ePXrCe5ORkPf/887r33nt15swZ67wrW84sXLjQLnQzceJERUVFlTsmKipKt9xyi9U+d+6cWz7xKu6jjz6yaz/55JPlLrHo7++vZ5991u7cokWLKnSv7777TgMGDNCyZcvszrOVD1D1eD+XrTa+n6vyzwNwMeIdWrba+A5dvXq18vPzrfbdd999wS0koqOj1atXL6udlJTE+xNwA97PZauN7+fy/Pbbb3bfaLvuuuucngOo7Xjnlq02v3OLh5AiIyMVGBhYiUoBuIL3c9lq6/u5eM6gbt26evnlly+4JXz//v0VGRlptbdu3er28BVQ27g9hFTEMAz17dtXL774ourVq+ewf9OmTfXhhx9aqVHTNPXjjz/q7NmzkqTx48dr2bJldiEl0zRlmqYGDBig1atXa8CAAe58BKDSSv6P+Kabbqrw2D/96U927ZKf7BRfalBShZdbLLl85Jo1a8rtv2DBAt10001auHChCgoKrPPdu3fXE088UaF7lmSaplasWGG1L7300govY3jDDTcoICBAzZo1U6dOneyWsXRVZmamfvjhB6vdvn17derU6YLjOnTooM6dO1vt9evXKy8vr8z+x48f16hRozRmzBgdOXLEOu/v76+XXnpJERERlXwCABXF+9mx2vp+rso/D8DFiHeoY7X1Hbp9+3a7dvF/nCxPyZ8KP3HiRIXGASgb72fHauv7uSyFhYUaP368td3IFVdcoVGjRlW8cACSeOeWpba/c4uHkMpaGQVA1eL97FhtfT8fPnxYO3bssNp33nlnhRYxKco0BAYGKioqSpdddplOnz59wXEAyubWEFLRJ12macrHx0fPPPPMBcf4+/tr0qRJ1spJhYWF+vHHH/Wf//xHn332mST7rd0uueQSzZs3Ty+++KJCQ0PdWT7gkuJp5kaNGiksLKzCY0tuX1AUxCuyadMm69jX11c9e/as0LxXXXWV3RaFa9euLbf/Bx98YLfvqZ+fn8aMGaN///vflf77tmvXLrvk9uDBg8tNNRfXr18/7dixQ999950+/fRTt+7B+uOPP9p9QnfttddWeGzxn+TOysqyC2CWtHnz5lLXL730Ui1evJgQJeAhvJ8dq63v56r88wBcjHiHOlZb36FvvPGG1q9fr5kzZ+rJJ5+s8DdbcnJy7NoV/b0CUDbez47V1vdzWWbMmKFt27ZJkurXr6+XXnpJPj5u/edgoFbgnetYbX7npqSk2D17Wdsb/b/27jy65jv/4/hLIpEmJCoitkiKIagtNTrtUKVTZhw1HerE2qO0aW0zUw5S+6+0FU5npurU1GBsp2pMTYoOQ21F0Yq1jKWLpYgwEiIViSS/P3J83e+9We43994g3+fjnJyTzzff5fP95uuVr3vf9/MB4Fvkc9Hsms/O0w87F4SVZPLkyUpJSdHnn3+uVatWMcUm4KHKpa/ivgsXLkgqfEGxTZs2qlevnlvbtW/fXtHR0Tpz5oykwmB3DOU7IyH1799fY8eOLXZkJeBeWrNmjS5duqS0tDTdvHnT0raODwNS4QtDd+Tm5urkyZNGu2HDhm4P7RoUFKTGjRsbFdz//e9/lZOTU+rQg1LhPKmTJ09WixYt3DpWcfbt22dqd+rUyaP9ecvRo0dN7ZYtW7q9rfO6hw4dcuu8goODNXToUCUkJLj1OwDgHeRz0eyaz766H4CKigwtml0zVCqcaqJu3bqWpvNx/CSiVPj7BuAZ8rlods5nZ0eOHNG8efOMdmJioqKioozXbwG4j8wtmp0z13nEFIqQgHuDfC6aXfPZ8bwjIiLUrFmzMvQSgDd4tQjp6tWrRiVlq1atLG3bpk0bowhp9erVys/PV6VKlVRQUKAaNWooKSnJUkUkUN4iIyMVGRlZpm137dplajvOPXrmzBlTZbDVF+xjYmKMh53c3FydOXOmxP8UxcbGavjw4erWrZul4xTnm2++Mb4PCQlRTEyMV/brqe+++87UbtSokdvbOp/Dt99+W+L6QUFB6tWrl4YPH66IiAi3jwPAO8jnotk1n311PwAVFRlaNLtmaFls375dhw8fNtoNGzbkE4WAF5DPRSOfC2VnZ2vcuHHKzc2VVPjGU3x8vNvHBGBG5hbNzpnrOBWb5Dod240bN3T9+nWFhoa6XbgAwDryuWh2zWfH83acvg1A+fNqEZLjEOs1a9a0tG39+vWN7x0LkGJjY/Xhhx+W+Y8IcL87cuSI9u/fb7QDAwPVrl07o33+/HnT+nXq1LG0f+d/OxcuXCj2YWfOnDle/8N8+vRp4/uoqCjTkI8pKSn69NNPdfDgQV28eFG3b99WRESE2rZtq+7du/u0Otv5k39WrmtR17Q47du317Zt25g+EngAkc8VO5+tKu1+AGBGhpKhUuGnUqdOnWpa9vrrr3u8XwBlRz7bI59nzZql77//XpJUvXp1zZgxw+3jAfAeMrfiZq5jEZK/v78aNmyolJQU/fOf/9SXX36p1NRU4+chISF68skn1aNHD3Xr1o2piYH7APlc8fL5xo0bptGtoqKijO9zcnK0bds2rVu3TidOnNClS5cUGBioyMhI/fKXv9Tzzz+v2NhYK6cCoBReLULKyckxvg8JCbG0bVhYmMuyNm3aaOHChZb3BTwo8vPzXV4Ievrpp033vPM8tM7z1JbGeQ7c9PT0Ytf1RWWw48NarVq1JBVWO0+cOFEHDhxwWf/MmTM6c+aMkpOT1a5dO7399tuKjo72er8cr2uVKlUsfSKlWrVqCggIMD5RWNI1dSywBPDgIJ8rfj5b4c79AOAuMtSeGZqZmam0tDSlp6fr0KFDWrNmjcs0Fa+++qq6du1qab8AvId8tkc+79ixQx999JHRnjp1qnEtAJQfMrdiZ65jEVK1atU0bNgw7dy5s8h1s7KytGnTJm3atEktWrTQ7NmzLY3+AcC7yOeKmc/OhWN3znvbtm2aNm2aLl68aPr5zZs3de3aNZ08eVJLlizR7373O02aNMk0LR+AsvPz5s4KCgqM761WczvPhRkaGqq5c+fy5g4qtDlz5ujgwYNG28/PT6NGjTKtc/36dVPb6vCtzv+GnPfnS3l5ebp27ZrRDg4OVkpKivr06VPkg46zffv2KT4+XocOHfJ63xz7VZYhcR2va2Zmplf6BOD+QT6XzG757M79AOAuMrRkFTVDk5OT1b17dw0YMECzZs0yFSDVqFFDM2fO1OjRoy33CYD3kM8lqwj5nJGRoQkTJhiv0fbo0UPdu3e3fDwAniNzS/YgZ25eXp5pSqGMjIxiC5CcHT16VPHx8dqzZ4/lfgHwDvK5ZA9qPl+9etXUDg4O1pIlS/Taa6+5FCA5y8/P1yeffKKBAwe6FKABKBuvjoTkLZUqVdLgwYMtT+kGPEiSk5M1b94807IBAwa4zB/tOMKYJAUFBVk6jnOBn/P+fCkzM9NUnHjlyhUNGzZMWVlZkgrne42Pj1ebNm0UHBys1NRUbd26VatWrTL6mZ6ertdee03JyclenZbR8TpYvaaSFBAQUOS+ADz4yGfy2ZG79wOAQmSofTO0pOmBoqOjlZ+fr9zcXNMxAJQf8tke+Tx16lSlpaVJKvz095QpUywfC4DnyNyKnbmnT59Wdna2y/K4uDj169dPbdu2VWRkpLKysnT8+HGtW7dOycnJun37tqTCazdq1Cj94x//0COPPGK5fwDKjnyuuPnsXJS0Y8cObd261Wh36NBBPXv2VOPGjeXv76/vv/9e69at0+bNm411jh49qj/84Q9avHixKle+L0sogAfGffcvqKCgQJUqVWKIdlRo69ev14QJE0zLWrZsqXHjxrms6/yH1N/f39KxnP9Q3vnPTnm4deuWqb1v3z7j+6FDh2r06NGm/v3sZz9Tx44dNXDgQCUkJOjcuXOSCiuYJ06cqAULFnitb3eGbJSsX1PJ/LBTntcUgG+Rz+SzIyv3AwAyVLJ3hpb0ycIDBw7owIED+tvf/qY5c+ZQyAmUM/LZHvmcnJysDRs2GO233npLYWFhlo8FwDNkbsXPXMep2O6s/8Ybb2jAgAGm5YGBgXriiSf0xBNPKD4+XsOGDdOVK1ckFY6KkpiYqJUrV1ruH4CyIZ8rdj47n/edAqQqVapo5syZLqODxsbGqnv37tq8ebPGjBmjmzdvSpK+/vprLVq0SAkJCZb7B+Aur07H5k316tW7110AfGL16tUaM2aM8vLyjGWRkZGaM2eOS3W0VDgUpCPHCmZ35Ofnm9pl+cNeVo7n6GjgwIEaN25csZXEDRs21MKFC01DK+7YscOrwz86Xlfna+QOx3Mrz2sKwHfIZ/LZkdX7AbA7MpQM7devn9avX69Dhw4pJSVFq1at0ksvvWT6dOMPP/ygQYMGmaavAOBb5LM98vnChQuaMWOG0e7bt6+eeuopy8cB4Bky1x6ZGx4erp49e6pt27aKiIjQpEmTXAqQnLVq1Urz5s0zvYF+8OBBbdu2zXL/AFhHPlf8fC7uvGfNmlXi9MTPPPOM3n77bdOyRYsW6aeffrLcPwB33bdFSGUZhg243y1cuFATJkww/TEMDw/X3//+d9WtW7fIbZwfgBwrhd3hXA1cnm+cFvVgVbNmTY0dO7bUbaOjozVkyBDTsuTkZG91zXQdylKF7vg75M1o4MFHPpPPjspyPwB2RoaSoZL0+OOPq2HDhgoKClLVqlXVqlUrJSYmatWqVapdu7axXkZGhhITEy2/iAvAOvLZHvmcn5+v8ePHG1NQNGjQQOPHjy9jTwGUFZlrj8yVCp97Z8+erY8//lg7d+5U37593dpvq1at1Lt3b9Oyzz77zHL/AFhDPtsjn50LxySpc+fO+vWvf13qfrt3767HH3/caKenp2v79u2W+wfgrvtuOjagIrp9+7amT5+ujz/+2LQ8IiJCS5YsUaNGjYrd1rHqWJIxJKC7nKt1H3roIUvbe6JKlSouy3r27Ol2keELL7yg999/32jv2bPH9PPExET961//cmtf9erV05YtW4x2SEiIcS2tXlPJfF0pmgQeXOTzXeSzZ/cDYEdk6F1kaPGaNGmiefPmqU+fPsaLjIcPH9auXbvUoUMHrxwDgBn5fJcd8nnRokX66quvJBW++ZKUlKTg4GDLxwBQNmTuXXbIXE/17t3bdK/s3r3bq/sHcBf5fJcd8rmo83O3SFQqzOe9e/ca7T179ug3v/mN5T4CKHTfjoQEVBQ3btzQq6++6vKgExUVpRUrVpT6hmb16tVN7evXr1s6vvP6NWrUsLS9J0JDQ12qjx977DG3t69du7YiIyON9tmzZ732iWnH63rjxg1LQz/m5uaaHpDCw8O90icA5Yt8Jp8deXo/AHZDhpKhVjRv3lw9e/Y0Ldu0aZPX9g/gLvLZXvl84sQJvffee0b75ZdfVlxcnGedBeA2MtdemesNLVq0ME3JdvnyZeXk5Hj1GADIZzvmc2hoqMs2Vs67TZs2pvbp06fd3haAK4qQAB/68ccf1bdvX+3cudO0vHnz5lqxYoWioqJK3Yfj1AWSdOXKFUt9+N///mdqR0REWNreE35+fi4PV1aP77j+7du3LT/sFcfxuubl5Sk9Pd3tba9evWp66KpZs6ZX+gSg/JDP5LMjb9wPgJ2QoWRoWTz77LOm9okTJ7y6fwDksx3zeePGjaY3r+fPn6+mTZuW+PXiiy+a9j937lzTzxMTE8tyioDtkLn2y1xv8Pf3V1hYmGlZRkaGV48B2B35bM98dj7HKlWqqFq1am7v33l7K30D4IoiJMBHjh8/rr59++rUqVOm5R06dNDy5cvd/qMfHR1tav/444+W+nHu3DlTOyYmxtL2nmrQoIGpnZ2dbWn7ypXNs0Y6zvnqCed+Wbmuztf0kUce8UqfAJQP8rkQ+VzIW/cDYBdkaCEy1DrnvvGCHuBd5HMh8hlAeSBzC5G5ZeN8nuU5TRNQ0ZHPheyYz1FRUaYRoHJzcy312/mcrYzSBMBV5dJXAWDVkSNHNGTIEJfq4N69e+vNN990+WNWkho1aqhWrVpKS0uTJJeHp9J8++23xveRkZEun7TwtdjYWO3fv99oX7x40dL2jp8E8ff3N1Uuz5w5UzNnzixTv5o1a2Zqnzx5Uq1bt3Zr25MnT5raTZo0KVMfAJQ/8vku8tm79wNgB2ToXXbM0JycHB05ckTnzp3T2bNnVbNmTfXv39/tvjm/gBccHOz2tgBKRj7fZcd8BlC+yNy77Ji5+fn5Sk1N1ZUrV3T16lXl5+erS5cubvctJyfHdO8EBARYGqkDQPHI57vsmM+BgYFq2LChce3z8/OVlpamOnXquLV/5w9KOU/JB8Aan7yzUlBQoGnTpmnatGll3t45iNxVqVIlHTt2rEzbAt5w8uTJIh90Ro0apZEjR5Zpn3FxcdqwYYMkKTU1VefPn1e9evVK3e706dOmYSJ//vOfl+n4nmjXrp0++ugjo71nzx49//zzbm1748YNnT171mjHxMSY5sz2RFxcnKm9f/9+9enTx61tU1JSTO127dp5pU8AfIt8NrN7PvvifgAqMjLUzI4ZeuvWLVPRUb169SwVITmesyTVqlXL7W0BFI98NrNbPg8aNEg9e/a01JdDhw5p7Nixpn0MGjTIaFetWtXS/gA7IXPN7Ja5knT9+nV17tzZaIeEhGjfvn2m0TdKcuTIEdPIHI8++qhb2wEoGflsZsd8lqTHHnvMVAC2e/du9erVy639O9cWNG7c2K3tABTNZ9OxFRQUWP7ydPui9gOUp4yMDCUkJJgedPz8/PR///d/Hr2h+dRTT5na//nPf9zabuPGjaZ2x44dy9yHsurQoYPpAWXz5s26efOmW9tu3brV9InpX/ziF17rV+PGjU0PjFu2bFFOTk6p22VnZ+uLL74w2vXr12codOABQD67snM+++p+ACoqMtSVHTO0WrVqql+/vtE+f/68Dhw44HbfPv/8c1ObQn7Ac+SzK7vlc/Xq1RUdHW3pKzIy0nSMsLAw08/Dw8O9cMZAxUPmurJb5kqFuVu7dm2jnZWVpb1797rdt08//dTUfvLJJ93eFkDRyGdXdsxnSaYiUUlat26d233bsmWLqe3N8wbsyCdFSJUqVbonX8C9NnHiRNOwhn5+fkpKSlLfvn092m/Xrl0VFBRktJcuXaqffvqpxG2ysrK0bNkyo121alV17drVo36URVhYmJ555hmjff36dc2dO7fU7XJzczV//nzTsh49eni1b88995zxfUZGhlauXFnqNitWrDA9zLpbRQ3g3iKfXdk5n311PwAVFRnqyq4Z2q1bN1Pb+VyKc/LkSa1du9Zo+/n53ZPfG1DRkM+u7JrPAHyPzHVl18z91a9+ZWovXLjQrT6dOnVKycnJRrty5cqKj493a1sAxSOfXdk1nzt27GgadXnXrl3avn17qfs/d+6c1qxZY7RDQ0NditAAWOP1IiRPRjDy9Au4l9auXevy6d7Ro0dbHha7KNWqVdMLL7xgtC9evKjx48ebqpEd5efna+zYscZ8tZLUv39/BQcHe9yXshg2bJhpSNrFixdr06ZNJW4zY8YM0xyvcXFxLkM1eqp///6qUqWK0Z49e7YOHjxY7Pr79+/Xn/70J6MdEhKifv36ebVPALyPfC6eHfPZl/cDUBGRocWzY4b27dvX9GnKLVu2aNWqVSX2JzU1VSNGjNDt27eNZb169VJ0dHRppwKgBORz8eyYzwB8i8wtnh0zNz4+Xv7+/kZ7x44dWr58eYn9SU1N1ciRI3Xr1i3TfpxHpwNgDflcPDvmc+XKlZWQkGBaNnnyZH333XfF7v/GjRt6/fXXlZ2dberjvfq9ARVFZW/u7J133vHm7oAHRkFBgebNm2daFhsbq2effVZnzpyxvL+wsDBVr17dtGz48OFat26dMjIyJBUO6fjKK6/ozTffNA1feP78eU2ZMkU7d+40ltWqVcvlD295io2N1ZAhQ7RgwQJJ0u3bt/X73/9eCQkJGjx4sB5++GFj3UuXLumtt94yDW0ZEBCgiRMner1fkZGRGjp0qD744ANJ0q1bt/TSSy9p8uTJ+u1vf2v8ZzIvL0/JycmaMWOGaWjIESNGqEaNGl7vFwDvIZ9LZrd8Lo/7AahIyNCS2S1DJalBgwZ65ZVXjH1L0pQpU3Tu3DklJCSoatWqxvK8vDz9+9//VlJSki5fvmwsr1+/vsaMGePVcwbshnwumR3zGYDvkLkls2PmNmnSRP379zeNdjJ9+nSdPn1aI0aMMJ1zXl6eNmzYoJkzZ5oKExo0aMAzMeAh8rlkdsxnSerXr58+++wzY/r4S5cuqX///ho3bpyee+45BQYGGusePnxYkydP1vHjx41ldevWvae/N6CiqFTAEEKAx7Zv3+7VP0ojR47UqFGjXJZ/8cUXGj58uHJzc41l/v7+atWqlWrVqqW0tDQdOnTIVIkdEBCgxYsXq127dh71afXq1XrjjTeM9jvvvGNpGPC8vDwlJiaahjSUpKCgIMXGxioyMlJpaWk6fPiw8vLyTOtMmzbNZ5/2y83NVUJCgr788kvT8lq1aqlFixYqKCjQsWPHTP9JlKROnTrpww8/9HgqyC5duuj8+fOSpHr16rnMOwvAM+Rz6eyUz+V1PwAVBRlaOjtl6B15eXn64x//qI0bN5qWBwUFqVWrVgoPD1dmZqaOHDmia9eumdapUaOGli9frkaNGnl4hoC9kc+ls2M+u2vv3r168cUXjTbPtEDJyNzS2TFzc3JylJCQoN27d5uWBwQEGL+zzMxMffPNN0bxwh1169bV0qVLFRUV5dkJAjZHPpfOjvksSVevXtXgwYN14sQJ0/KHH35YTZs2VWhoqH744QedOnXK9PPg4GAtXbpULVu29ODsAEheHgkJsKsdO3aUy3GeeuopzZkzR2PGjDHmns3LyzMqep2FhIToz3/+s8cPOt7g7++vpKQk1axZU4sXLzYeyLKzs4sdarFKlSqaPHmy+vTp47N+BQQEaN68eRo5cqTp95iWlubygHNH586d9d5773nlxT8AvkU+l85O+Vxe9wNQUZChpbNTht7h7++vd999V7NmzTJ9+js7O1tfffVVsdu1bNlS77//vurUqWPxbAA4I59LZ8d8BuAbZG7p7Ji5gYGB+uCDDzR16lTTm/u5ublKSUkpdrvWrVvr3XffpQAJ8ALyuXR2zGep8ANQy5Yt0+jRo02jU6Wnp2vPnj1FblO7dm3NmTOHAiTAS/xKXwVAac6dO1dux+rSpYvWr1+vHj16mOZNdRQQEKAePXpo7dq16tSpU7n1rTR+fn4aP368PvnkEz399NMKCAgocr2AgAB1795dycnJPn3QuSMoKEgLFixQUlKSYmJiil0vJiZGM2bM0F//+tdirz2A+wv57B675HN53g9ARUCGuscuGeooMDBQkyZN0rJly9ShQwf5+RX/0kLTpk2VlJSklStXUoAEeAn57B475jMA7yNz3WPHzA0ODtbs2bM1f/58tW/fvsQ3xps1a6bp06dr5cqVFCABXkI+u8eO+SwVTq+3cOFC/eUvf9Gjjz5a4novv/yy1q5dq9atW1s5BQAlYDo24AGWlZWlr7/+WhcvXtS1a9cUHBysBg0aqG3btgoLC7vX3StVZmam9u3bp0uXLik9PV0PPfSQYmJiFBcXp9DQ0HvWr1OnTunYsWO6cuWK8vLyFB4erhYtWqhp06Z88hCAW8hn3yCfAXsgQ33DlxmakZGhlJQUpaamKjMzU1WrVlV4eLji4uIUGRnppTMAcK+Rz77BMy6AopC5vuHLzE1PT9f+/ftNz8QRERFq3rw5hUdABUI++4avn4nPnz+vw4cP6/Lly8rKylJoaKiaNGmi1q1bKzAw0AtnAMARRUgAAAAAAAAAAAAAAAAAPMJ0bAAAAAAAAAAAAAAAAAA8QhESAAAAAAAAAAAAAAAAAI9QhAQAAAAAAAAAAAAAAADAIxQhAQAAAAAAAAAAAAAAAPAIRUgAAAAAAAAAAAAAAAAAPEIREgAAAAAAAAAAAAAAAACPUIQEAAAAAAAAAAAAAAAAwCMUIQEAAAAAAAAAAAAAAADwCEVIAAAAAAAAAAAAAAAAADxCERIAAAAAAAAAAAAAAAAAj1CEBAAAAAAAAAAAAAAAAMAjFCEBAAAAAAAAAAAAAAAA8AhFSAAAAAAAAAAAAAAAAAA8QhESAAAAAAAAAAAAAAAAAI9QhAQAAAAAAAAAAAAAAADAIxQhAQAAAAAAAAAAAAAAAPAIRUgAAAAAAAAAAAAAAAAAPEIREgAAAAAAAAAAAAAAAACPUIQEAAAAAAAAAAAAAAAAwCMUIQEAAAAAAAAAAAAAAADwCEVIAAAAAAAAAAAAAAAAADxCERIAAAAAAAAAAAAAAAAAj1CEBAAAAAAAAAAAAAAAAMAjFCEBAAAAAAAAAAAAAAAA8AhFSAAAAAAAAAAAAAAAAAA8QhESAAAAAAAAAAAAAAAAAI/8P65ZqTa4FnBlAAAAAElFTkSuQmCC\n"
     },
     "metadata": {
      "image/png": {
       "width": 1168,
       "height": 769
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 进行可视化\n",
    "sns.set_style('ticks')\n",
    "sns.set_context(\"notebook\", font_scale= 1.4)\n",
    "plt.figure(figsize = (12,8))\n",
    "# 转换日期格式  将date_received列表中的日期字符串转换为pandas的DateTime对象\n",
    "date_received_dt = pd.to_datetime(date_received, format='%Y%m%d')\n",
    "# 绘制条形图\n",
    "plt.subplot(211) # 创建一个2行1列的子图，并激活第一个子图。\n",
    "# 绘制收到优惠券数目的条形图\n",
    "plt.bar(date_received_dt, couponbydate['count'], label = 'number of coupon received' )\n",
    "# 在同一子图上绘制使用优惠券数目的条形图\n",
    "plt.bar(date_received_dt, buybydate['count'], label = 'number of coupon used')\n",
    "plt.yscale('log')\n",
    "plt.ylabel('Count')\n",
    "plt.legend()\n",
    "# 绘制使用率比率图\n",
    "plt.subplot(212) # 创建一个2行1列的子图，并激活第二个子图\n",
    "# 绘制使用优惠券与收到优惠券比率的条形图\n",
    "plt.bar(date_received_dt, buybydate['count']/couponbydate['count'])\n",
    "plt.ylabel('Ratio(coupon used/coupon received)')\n",
    "plt.tight_layout()  # 自动调整子图参数，使之填充整个图像区域"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:34.308126800Z",
     "start_time": "2024-09-19T12:02:32.849175700Z"
    }
   },
   "id": "96de2c7092c87419"
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "outputs": [],
   "source": [
    "# 新建关于星期的特征\n",
    "def getWeekday(row):\n",
    "    if row == 'null':\n",
    "        return row\n",
    "    else:\n",
    "        return date(int(row[0:4]), int(row[4:6]), int(row[6:8])).weekday() + 1\n",
    "\n",
    "dfoff['weekday'] = dfoff['Date_received'].astype(str).apply(getWeekday)\n",
    "dftest['weekday'] = dftest['Date_received'].astype(str).apply(getWeekday)\n",
    "\n",
    "# weekday_type :  周六和周日为1，其他为0\n",
    "dfoff['weekday_type'] = dfoff['weekday'].apply(lambda x : 1 if x in [6,7] else 0 )\n",
    "dftest['weekday_type'] = dftest['weekday'].apply(lambda x : 1 if x in [6,7] else 0 )"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:35.520925100Z",
     "start_time": "2024-09-19T12:02:34.329241Z"
    }
   },
   "id": "685d5ba6959aeffe"
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7']\n"
     ]
    }
   ],
   "source": [
    "# change weekday to one-hot encoding \n",
    "weekdaycols = ['weekday_' + str(i) for i in range(1,8)]\n",
    "print(weekdaycols)\n",
    "\n",
    "tmpdf = pd.get_dummies(dfoff['weekday'].replace('null', np.nan))\n",
    "tmpdf.columns = weekdaycols\n",
    "dfoff[weekdaycols] = tmpdf\n",
    "\n",
    "tmpdf = pd.get_dummies(dftest['weekday'].replace('null', np.nan))\n",
    "tmpdf.columns = weekdaycols\n",
    "dftest[weekdaycols] = tmpdf"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:35.812676800Z",
     "start_time": "2024-09-19T12:02:35.520925100Z"
    }
   },
   "id": "75b78b8b76845117"
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "outputs": [],
   "source": [
    "# 数据标注\n",
    "# 三类：\n",
    "#     Date_received == 'null': y = -1\n",
    "#     Date != 'null' & Date-Date_received <= 15: y = 1\n",
    "#     Otherwise: y = 0"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:35.812676800Z",
     "start_time": "2024-09-19T12:02:35.799326400Z"
    }
   },
   "id": "2fe82730e247214d"
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "outputs": [],
   "source": [
    "def label(row):\n",
    "    if row['Date_received'] == 'null':\n",
    "        return -1\n",
    "    if row['Date'] != 'null':\n",
    "        td = pd.to_datetime(row['Date'], format='%Y%m%d') -  pd.to_datetime(row['Date_received'], format='%Y%m%d')\n",
    "        if td <= pd.Timedelta(15, 'D'):\n",
    "            return 1\n",
    "    return 0\n",
    "dfoff['label'] = dfoff.apply(label, axis = 1)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:56.498623800Z",
     "start_time": "2024-09-19T12:02:35.808864900Z"
    }
   },
   "id": "bbbad308f1ba3bd3"
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 0    988887\n",
      "-1    701602\n",
      " 1     64395\n",
      "Name: label, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print(dfoff['label'].value_counts())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:56.518987800Z",
     "start_time": "2024-09-19T12:02:56.499125900Z"
    }
   },
   "id": "db62d115b485dbe3"
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "已有columns： ['User_id', 'Merchant_id', 'Coupon_id', 'Discount_rate', 'Distance', 'Date_received', 'Date', 'discount_rate', 'discount_man', 'discount_jian', 'discount_type', 'distance', 'weekday', 'weekday_type', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7', 'label']\n"
     ]
    }
   ],
   "source": [
    "print('已有columns：',dfoff.columns.tolist())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:56.518987800Z",
     "start_time": "2024-09-19T12:02:56.512779600Z"
    }
   },
   "id": "7b5748b700571511"
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id Coupon_id Discount_rate Distance Date_received  \\\n0  1439408         2632      null          null        0          null   \n1  1439408         4663     11002        150:20        1      20160528   \n\n       Date  discount_rate  discount_man  discount_jian  ... weekday  \\\n0  20160217       1.000000             0              0  ...    null   \n1      null       0.866667           150             20  ...       6   \n\n   weekday_type weekday_1  weekday_2  weekday_3  weekday_4  weekday_5  \\\n0             0         0          0          0          0          0   \n1             1         0          0          0          0          0   \n\n   weekday_6  weekday_7  label  \n0          0          0     -1  \n1          1          0      0  \n\n[2 rows x 22 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>Coupon_id</th>\n      <th>Discount_rate</th>\n      <th>Distance</th>\n      <th>Date_received</th>\n      <th>Date</th>\n      <th>discount_rate</th>\n      <th>discount_man</th>\n      <th>discount_jian</th>\n      <th>...</th>\n      <th>weekday</th>\n      <th>weekday_type</th>\n      <th>weekday_1</th>\n      <th>weekday_2</th>\n      <th>weekday_3</th>\n      <th>weekday_4</th>\n      <th>weekday_5</th>\n      <th>weekday_6</th>\n      <th>weekday_7</th>\n      <th>label</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>null</td>\n      <td>null</td>\n      <td>0</td>\n      <td>null</td>\n      <td>20160217</td>\n      <td>1.000000</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>null</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>-1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1439408</td>\n      <td>4663</td>\n      <td>11002</td>\n      <td>150:20</td>\n      <td>1</td>\n      <td>20160528</td>\n      <td>null</td>\n      <td>0.866667</td>\n      <td>150</td>\n      <td>20</td>\n      <td>...</td>\n      <td>6</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n<p>2 rows × 22 columns</p>\n</div>"
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfoff.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:56.580585700Z",
     "start_time": "2024-09-19T12:02:56.518987800Z"
    }
   },
   "id": "82c2c6320eceb153"
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "outputs": [],
   "source": [
    "# 最Naïve的模型\n",
    "# 直接用 discount, distance, weekday 类的特征。\n",
    "# train/valid 的划分：用20160101到20160515的作为train，20160516到20160615作为valid。\n",
    "# 用线性模型 SGDClassifier\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:56.580585700Z",
     "start_time": "2024-09-19T12:02:56.531912200Z"
    }
   },
   "id": "8830c3505687686f"
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    759172\n",
      "1     41524\n",
      "Name: label, dtype: int64\n",
      "0    229715\n",
      "1     22871\n",
      "Name: label, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# data split\n",
    "df = dfoff[dfoff['label'] != -1].copy()\n",
    "train = df[(df['Date_received'] < '20160516')].copy()\n",
    "valid = df[(df['Date_received'] >= '20160516') & (df['Date_received'] <= '20160615')].copy()\n",
    "print(train['label'].value_counts())\n",
    "print(valid['label'].value_counts())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:57.073450900Z",
     "start_time": "2024-09-19T12:02:56.539257100Z"
    }
   },
   "id": "6e3e8d14b6767517"
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "14 ['discount_rate', 'discount_type', 'discount_man', 'discount_jian', 'distance', 'weekday', 'weekday_type', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7']\n"
     ]
    }
   ],
   "source": [
    "# feature\n",
    "original_feature = ['discount_rate','discount_type','discount_man', 'discount_jian','distance', 'weekday', 'weekday_type'] + weekdaycols\n",
    "print(len(original_feature),original_feature)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:02:57.073450900Z",
     "start_time": "2024-09-19T12:02:57.052493900Z"
    }
   },
   "id": "d31d249156bece21"
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['discount_rate', 'discount_type', 'discount_man', 'discount_jian', 'distance', 'weekday', 'weekday_type', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7']\n",
      "Fitting 3 folds for each of 9 candidates, totalling 27 fits\n",
      "0.9481401180986534\n",
      "{'en__alpha': 0.001, 'en__l1_ratio': 0.001}\n"
     ]
    }
   ],
   "source": [
    "# model1\n",
    "predictors = original_feature\n",
    "print(predictors)\n",
    "\n",
    "def check_model(data, predictors):\n",
    "    \n",
    "    classifier = lambda: SGDClassifier(\n",
    "        loss='log_loss', \n",
    "        penalty='elasticnet', \n",
    "        fit_intercept=True, \n",
    "        max_iter=100, \n",
    "        shuffle=True, \n",
    "        n_jobs=1,\n",
    "        class_weight=None)\n",
    "\n",
    "    model = Pipeline(steps=[\n",
    "        ('ss', StandardScaler()),\n",
    "        ('en', classifier())\n",
    "    ])\n",
    "\n",
    "    parameters = {\n",
    "        'en__alpha': [ 0.001, 0.01, 0.1],\n",
    "        'en__l1_ratio': [ 0.001, 0.01, 0.1]\n",
    "    }\n",
    "\n",
    "    folder = StratifiedKFold(n_splits=3, shuffle=True)\n",
    "    \n",
    "    grid_search = GridSearchCV(\n",
    "        model, \n",
    "        parameters, \n",
    "        cv=folder, \n",
    "        n_jobs=-1, \n",
    "        verbose=1)\n",
    "    grid_search = grid_search.fit(data[predictors], \n",
    "                                  data['label'])\n",
    "    \n",
    "    return grid_search\n",
    "\n",
    "if not os.path.isfile('1_model.pkl'):\n",
    "    model = check_model(train, predictors)\n",
    "    print(model.best_score_)\n",
    "    print(model.best_params_)\n",
    "    with open('1_model.pkl', 'wb') as f:\n",
    "        pickle.dump(model, f)\n",
    "else:\n",
    "    with open('1_model.pkl', 'rb') as f:\n",
    "        model = pickle.load(f)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:12.178947700Z",
     "start_time": "2024-09-19T12:02:57.062460500Z"
    }
   },
   "id": "3ef6c92c860bab88"
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id Coupon_id Discount_rate Distance Date_received  Date  \\\n1  1439408         4663     11002        150:20        1      20160528  null   \n4  1439408         2632      8591          20:1        0      20160613  null   \n\n   discount_rate  discount_man  discount_jian  ... weekday_type  weekday_1  \\\n1       0.866667           150             20  ...            1          0   \n4       0.950000            20              1  ...            0          1   \n\n  weekday_2  weekday_3  weekday_4  weekday_5  weekday_6  weekday_7  label  \\\n1         0          0          0          0          1          0      0   \n4         0          0          0          0          0          0      0   \n\n   pred_prob  \n1   0.019009  \n4   0.101886  \n\n[2 rows x 23 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>Coupon_id</th>\n      <th>Discount_rate</th>\n      <th>Distance</th>\n      <th>Date_received</th>\n      <th>Date</th>\n      <th>discount_rate</th>\n      <th>discount_man</th>\n      <th>discount_jian</th>\n      <th>...</th>\n      <th>weekday_type</th>\n      <th>weekday_1</th>\n      <th>weekday_2</th>\n      <th>weekday_3</th>\n      <th>weekday_4</th>\n      <th>weekday_5</th>\n      <th>weekday_6</th>\n      <th>weekday_7</th>\n      <th>label</th>\n      <th>pred_prob</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>1</th>\n      <td>1439408</td>\n      <td>4663</td>\n      <td>11002</td>\n      <td>150:20</td>\n      <td>1</td>\n      <td>20160528</td>\n      <td>null</td>\n      <td>0.866667</td>\n      <td>150</td>\n      <td>20</td>\n      <td>...</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0.019009</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>8591</td>\n      <td>20:1</td>\n      <td>0</td>\n      <td>20160613</td>\n      <td>null</td>\n      <td>0.950000</td>\n      <td>20</td>\n      <td>1</td>\n      <td>...</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0.101886</td>\n    </tr>\n  </tbody>\n</table>\n<p>2 rows × 23 columns</p>\n</div>"
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 预测以及结果评价\n",
    "# 这边对每个coupon预测的结果计算AUC，再对所有的coupon做平均。计算AUC的时候，如果label只有一类，就直接跳过，因为AUC无法计算\n",
    "# valid predict\n",
    "y_valid_pred = model.predict_proba(valid[predictors])\n",
    "valid1 = valid.copy()\n",
    "valid1['pred_prob'] = y_valid_pred[:, 1]\n",
    "valid1.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:12.404682400Z",
     "start_time": "2024-09-19T12:03:12.175375600Z"
    }
   },
   "id": "f2059a4b3410f55"
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86183\\AppData\\Local\\Temp\\ipykernel_11440\\2652544982.py:4: FutureWarning: In a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.\n",
      "  for i in vg:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5324556905422653\n"
     ]
    }
   ],
   "source": [
    "# avgAUC calculation\n",
    "vg = valid1.groupby(['Coupon_id'])\n",
    "aucs = []\n",
    "for i in vg:\n",
    "    tmpdf = i[1] \n",
    "    if len(tmpdf['label'].unique()) != 2:\n",
    "        continue\n",
    "    fpr, tpr, thresholds = roc_curve(tmpdf['label'], tmpdf['pred_prob'], pos_label=1)\n",
    "    aucs.append(auc(fpr, tpr))\n",
    "print(np.average(aucs))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:14.905747700Z",
     "start_time": "2024-09-19T12:03:12.384381500Z"
    }
   },
   "id": "8fe144645fca9eba"
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Coupon_id  Date_received     label\n0  4129537       9983       20160712  0.108278\n1  6949378       3429       20160706  0.147979\n2  2166529       6928       20160727  0.005091\n3  2166529       1808       20160727  0.017513\n4  6172162       6500       20160708  0.066336",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Coupon_id</th>\n      <th>Date_received</th>\n      <th>label</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4129537</td>\n      <td>9983</td>\n      <td>20160712</td>\n      <td>0.108278</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>6949378</td>\n      <td>3429</td>\n      <td>20160706</td>\n      <td>0.147979</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2166529</td>\n      <td>6928</td>\n      <td>20160727</td>\n      <td>0.005091</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>2166529</td>\n      <td>1808</td>\n      <td>20160727</td>\n      <td>0.017513</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>6172162</td>\n      <td>6500</td>\n      <td>20160708</td>\n      <td>0.066336</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# test prediction for submission\n",
    "y_test_pred = model.predict_proba(dftest[predictors])\n",
    "dftest1 = dftest[['User_id','Coupon_id','Date_received']].copy()\n",
    "dftest1['label'] = y_test_pred[:,1]\n",
    "dftest1.to_csv('submit1.csv', index=False, header=False)\n",
    "dftest1.head()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:15.140376800Z",
     "start_time": "2024-09-19T12:03:14.905747700Z"
    }
   },
   "id": "12eafdf7de7387bb"
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "outputs": [],
   "source": [
    "# 整个过程中特征是优惠券，距离和时间，没有客户和商户的信息。下面将进行特征的提取。\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:15.144020Z",
     "start_time": "2024-09-19T12:03:15.133157500Z"
    }
   },
   "id": "2e7d4854fd4a531e"
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "outputs": [],
   "source": [
    "# 特征提取\n",
    "# 这边可以说是顾客和商户的profile建立，通过客户和商户以前的买卖情况，提取各自或者交叉的特征。选择哪个时间段的数据进行特征提取是可以探索的，这里使用20160101到20160515之间的数据提取特征，20160516-20160615的数据作为训练集。"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:15.153994100Z",
     "start_time": "2024-09-19T12:03:15.141835500Z"
    }
   },
   "id": "fba5391e55438731"
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    229715\n",
      "1     22871\n",
      "Name: label, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "feature = dfoff[(dfoff['Date'] < '20160516') | ((dfoff['Date'] == 'null') & (dfoff['Date_received'] < '20160516'))].copy()\n",
    "data = dfoff[(dfoff['Date_received'] >= '20160516') & (dfoff['Date_received'] <= '20160615')].copy()\n",
    "print(data['label'].value_counts())\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:16.099005Z",
     "start_time": "2024-09-19T12:03:15.149634Z"
    }
   },
   "id": "4f6a5802ec910808"
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "outputs": [],
   "source": [
    "fdf = feature.copy()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:16.223475100Z",
     "start_time": "2024-09-19T12:03:16.099005Z"
    }
   },
   "id": "4153f3727d149c3a"
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "outputs": [],
   "source": [
    "# 用户 User 特征\n",
    "# key of user\n",
    "u = fdf[['User_id']].copy().drop_duplicates()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:16.272020700Z",
     "start_time": "2024-09-19T12:03:16.223475100Z"
    }
   },
   "id": "c292a06e50f3541b"
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  u_coupon_count\n0        4               1\n1       35               4",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>u_coupon_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>35</td>\n      <td>4</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# u_coupon_count : num of coupon received by user\n",
    "u1 = fdf[fdf['Date_received'] != 'null'][['User_id']].copy()\n",
    "u1['u_coupon_count'] = 1\n",
    "u1 = u1.groupby(['User_id'], as_index = False).count()\n",
    "u1.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:16.509129600Z",
     "start_time": "2024-09-19T12:03:16.320804100Z"
    }
   },
   "id": "180ba5923e183e56"
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  u_buy_count\n0      165           10\n1      184            1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>u_buy_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>165</td>\n      <td>10</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>184</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# u_buy_count : times of user buy offline (with or without coupon)\n",
    "u2 = fdf[fdf['Date'] != 'null'][['User_id']].copy()\n",
    "u2['u_buy_count'] = 1\n",
    "u2 = u2.groupby(['User_id'], as_index = False).count()\n",
    "u2.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:16.679313900Z",
     "start_time": "2024-09-19T12:03:16.504360800Z"
    }
   },
   "id": "cf0065cf6dd72f04"
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  u_buy_with_coupon\n0      184                  1\n1      417                  1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>u_buy_with_coupon</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>184</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>417</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# u_buy_with_coupon : times of user buy offline (with coupon)\n",
    "u3 = fdf[((fdf['Date'] != 'null') & (fdf['Date_received'] != 'null'))][['User_id']].copy()\n",
    "u3['u_buy_with_coupon'] = 1\n",
    "u3 = u3.groupby(['User_id'], as_index = False).count()\n",
    "u3.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:16.813671700Z",
     "start_time": "2024-09-19T12:03:16.669795500Z"
    }
   },
   "id": "39315ca193982d01"
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  u_merchant_count\n0      165                 2\n1      184                 1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>u_merchant_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>165</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>184</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# u_merchant_count : num of merchant user bought from\n",
    "u4 = fdf[fdf['Date'] != 'null'][['User_id', 'Merchant_id']].copy()\n",
    "u4.drop_duplicates(inplace = True)\n",
    "u4 = u4.groupby(['User_id'], as_index = False).count()\n",
    "u4.rename(columns = {'Merchant_id':'u_merchant_count'}, inplace = True)\n",
    "u4.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:17.023002Z",
     "start_time": "2024-09-19T12:03:16.808833Z"
    }
   },
   "id": "3ae81c8c68b88ae1"
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  u_median_distance\n0      184                0.0\n1      417                0.0",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>u_median_distance</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>184</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>417</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# u_min_distance\n",
    "utmp = fdf[(fdf['Date'] != 'null') & (fdf['Date_received'] != 'null')][['User_id', 'distance']].copy()\n",
    "utmp.replace(-1, np.nan, inplace = True)\n",
    "u5 = utmp.groupby(['User_id'], as_index = False).min()\n",
    "u5.rename(columns = {'distance':'u_min_distance'}, inplace = True)\n",
    "u6 = utmp.groupby(['User_id'], as_index = False).max()\n",
    "u6.rename(columns = {'distance':'u_max_distance'}, inplace = True)\n",
    "u7 = utmp.groupby(['User_id'], as_index = False).mean()\n",
    "u7.rename(columns = {'distance':'u_mean_distance'}, inplace = True)\n",
    "u8 = utmp.groupby(['User_id'], as_index = False).median()\n",
    "u8.rename(columns = {'distance':'u_median_distance'}, inplace = True)\n",
    "u8.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:17.181569400Z",
     "start_time": "2024-09-19T12:03:17.023002Z"
    }
   },
   "id": "5d75099d0e2a57c6"
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "outputs": [
    {
     "data": {
      "text/plain": "((453684, 1),\n (412635, 2),\n (173770, 2),\n (29594, 2),\n (173770, 2),\n (29594, 2),\n (29594, 2),\n (29594, 2),\n (29594, 2))"
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u.shape, u1.shape, u2.shape, u3.shape, u4.shape, u5.shape, u6.shape, u7.shape, u8.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:17.202625200Z",
     "start_time": "2024-09-19T12:03:17.184865Z"
    }
   },
   "id": "9aec732980369e4f"
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "outputs": [],
   "source": [
    "# merge all the features on key User_id\n",
    "user_feature = pd.merge(u, u1, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u2, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u3, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u4, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u5, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u6, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u7, on = 'User_id', how = 'left')\n",
    "user_feature = pd.merge(user_feature, u8, on = 'User_id', how = 'left')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:17.910613900Z",
     "start_time": "2024-09-19T12:03:17.189199800Z"
    }
   },
   "id": "aa856d5ec9d268ab"
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  u_coupon_count  u_buy_count  u_buy_with_coupon  u_merchant_count  \\\n0  1439408             2.0          1.0                0.0               1.0   \n1  1832624             1.0          0.0                0.0               0.0   \n\n   u_min_distance  u_max_distance  u_mean_distance  u_median_distance  \\\n0             0.0             0.0              0.0                0.0   \n1             0.0             0.0              0.0                0.0   \n\n   u_use_coupon_rate  u_buy_with_coupon_rate  \n0                0.0                     0.0  \n1                0.0                     0.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>u_coupon_count</th>\n      <th>u_buy_count</th>\n      <th>u_buy_with_coupon</th>\n      <th>u_merchant_count</th>\n      <th>u_min_distance</th>\n      <th>u_max_distance</th>\n      <th>u_mean_distance</th>\n      <th>u_median_distance</th>\n      <th>u_use_coupon_rate</th>\n      <th>u_buy_with_coupon_rate</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1439408</td>\n      <td>2.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1832624</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate rate\n",
    "\n",
    "user_feature['u_use_coupon_rate'] = user_feature['u_buy_with_coupon'].astype('float')/user_feature['u_coupon_count'].astype('float')\n",
    "user_feature['u_buy_with_coupon_rate'] = user_feature['u_buy_with_coupon'].astype('float')/user_feature['u_buy_count'].astype('float')\n",
    "user_feature = user_feature.fillna(0)\n",
    "user_feature.head(2)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:17.952313800Z",
     "start_time": "2024-09-19T12:03:17.899052300Z"
    }
   },
   "id": "525b55c8c10aacba"
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "outputs": [],
   "source": [
    "# add user feature to data on key User_id\n",
    "data2 = pd.merge(data, user_feature, on = 'User_id', how = 'left').fillna(0)\n",
    "\n",
    "# split data2 into valid and train\n",
    "train, valid = train_test_split(data2, test_size = 0.2, stratify = data2['label'], random_state=100)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:18.550316Z",
     "start_time": "2024-09-19T12:03:17.952313800Z"
    }
   },
   "id": "50e4215171e855f7"
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24 ['discount_rate', 'discount_type', 'discount_man', 'discount_jian', 'distance', 'weekday', 'weekday_type', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7', 'u_coupon_count', 'u_buy_count', 'u_buy_with_coupon', 'u_merchant_count', 'u_min_distance', 'u_max_distance', 'u_mean_distance', 'u_median_distance', 'u_use_coupon_rate', 'u_buy_with_coupon_rate']\n",
      "Fitting 3 folds for each of 9 candidates, totalling 27 fits\n",
      "0.910619197497872\n",
      "{'en__alpha': 0.001, 'en__l1_ratio': 0.1}\n"
     ]
    }
   ],
   "source": [
    "# model2\n",
    "predictors = original_feature + user_feature.columns.tolist()[1:]\n",
    "print(len(predictors), predictors)\n",
    "\n",
    "if not os.path.isfile('2_model.pkl'):\n",
    "    model = check_model(train, predictors)\n",
    "    print(model.best_score_)\n",
    "    print(model.best_params_)\n",
    "    with open('2_model.pkl', 'wb') as f:\n",
    "        pickle.dump(model, f)\n",
    "else:\n",
    "    with open('2_model.pkl', 'rb') as f:\n",
    "        model = pickle.load(f)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:21.216899700Z",
     "start_time": "2024-09-19T12:03:18.556921400Z"
    }
   },
   "id": "33ffe793545eced7"
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86183\\AppData\\Local\\Temp\\ipykernel_11440\\3025937469.py:5: FutureWarning: In a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.\n",
      "  for i in validgroup:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.600811241245855\n"
     ]
    }
   ],
   "source": [
    "# valid set performance \n",
    "valid['pred_prob'] = model.predict_proba(valid[predictors])[:,1]\n",
    "validgroup = valid.groupby(['Coupon_id'])\n",
    "aucs = []\n",
    "for i in validgroup:\n",
    "    tmpdf = i[1] \n",
    "    if len(tmpdf['label'].unique()) != 2:\n",
    "        continue\n",
    "    fpr, tpr, thresholds = roc_curve(tmpdf['label'], tmpdf['pred_prob'], pos_label=1)\n",
    "    \n",
    "    aucs.append(auc(fpr, tpr))\n",
    "    #aucs.append(roc_auc_score(tmpdf['label'], tmpdf['pred_prob']))\n",
    "print(np.average(aucs))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.076701700Z",
     "start_time": "2024-09-19T12:03:21.215748400Z"
    }
   },
   "id": "49e6d1c93f476010"
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "outputs": [],
   "source": [
    "# 商户 Merchant\n",
    "# key of merchant\n",
    "m = fdf[['Merchant_id']].copy().drop_duplicates()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.118399Z",
     "start_time": "2024-09-19T12:03:22.069782200Z"
    }
   },
   "id": "98bee608ceae43d6"
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "outputs": [
    {
     "data": {
      "text/plain": "   Merchant_id  m_coupon_count\n0            2               1\n1            5               5",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Merchant_id</th>\n      <th>m_coupon_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>5</td>\n      <td>5</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# m_coupon_count : num of coupon from merchant\n",
    "m1 = fdf[fdf['Date_received'] != 'null'][['Merchant_id']].copy()\n",
    "m1['m_coupon_count'] = 1\n",
    "m1 = m1.groupby(['Merchant_id'], as_index = False).count()\n",
    "m1.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.257155100Z",
     "start_time": "2024-09-19T12:03:22.092013200Z"
    }
   },
   "id": "fbfb95a3d23b155a"
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "outputs": [
    {
     "data": {
      "text/plain": "   Merchant_id  m_sale_count\n0            1             5\n1            3             8",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Merchant_id</th>\n      <th>m_sale_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>3</td>\n      <td>8</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# m_sale_count : num of sale from merchant (with or without coupon)\n",
    "m2 = fdf[fdf['Date'] != 'null'][['Merchant_id']].copy()\n",
    "m2['m_sale_count'] = 1\n",
    "m2 = m2.groupby(['Merchant_id'], as_index = False).count()\n",
    "m2.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.397882800Z",
     "start_time": "2024-09-19T12:03:22.251665700Z"
    }
   },
   "id": "70dd8d3cf3228305"
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "outputs": [
    {
     "data": {
      "text/plain": "   Merchant_id  m_sale_with_coupon\n0           13                   1\n1           14                   1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Merchant_id</th>\n      <th>m_sale_with_coupon</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>13</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>14</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# m_sale_with_coupon : num of sale from merchant with coupon usage\n",
    "m3 = fdf[(fdf['Date'] != 'null') & (fdf['Date_received'] != 'null')][['Merchant_id']].copy()\n",
    "m3['m_sale_with_coupon'] = 1\n",
    "m3 = m3.groupby(['Merchant_id'], as_index = False).count()\n",
    "m3.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.530927Z",
     "start_time": "2024-09-19T12:03:22.398887500Z"
    }
   },
   "id": "86fb5f86785ab9e8"
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "outputs": [
    {
     "data": {
      "text/plain": "   Merchant_id  m_median_distance\n0           13                0.0\n1           14                0.0",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Merchant_id</th>\n      <th>m_median_distance</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>13</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>14</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# m_min_distance\n",
    "mtmp = fdf[(fdf['Date'] != 'null') & (fdf['Date_received'] != 'null')][['Merchant_id', 'distance']].copy()\n",
    "mtmp.replace(-1, np.nan, inplace = True)\n",
    "m4 = mtmp.groupby(['Merchant_id'], as_index = False).min()\n",
    "m4.rename(columns = {'distance':'m_min_distance'}, inplace = True)\n",
    "m5 = mtmp.groupby(['Merchant_id'], as_index = False).max()\n",
    "m5.rename(columns = {'distance':'m_max_distance'}, inplace = True)\n",
    "m6 = mtmp.groupby(['Merchant_id'], as_index = False).mean()\n",
    "m6.rename(columns = {'distance':'m_mean_distance'}, inplace = True)\n",
    "m7 = mtmp.groupby(['Merchant_id'], as_index = False).median()\n",
    "m7.rename(columns = {'distance':'m_median_distance'}, inplace = True)\n",
    "m7.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.688875Z",
     "start_time": "2024-09-19T12:03:22.530927Z"
    }
   },
   "id": "e22cb828233df9ee"
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "outputs": [
    {
     "data": {
      "text/plain": "((7667, 1),\n (4196, 2),\n (7529, 2),\n (2253, 2),\n (2253, 2),\n (2253, 2),\n (2253, 2),\n (2253, 2))"
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m.shape, m1.shape, m2.shape, m3.shape, m4.shape, m5.shape, m6.shape, m7.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.701575Z",
     "start_time": "2024-09-19T12:03:22.686182100Z"
    }
   },
   "id": "91b71a8f9eca8010"
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "outputs": [
    {
     "data": {
      "text/plain": "   Merchant_id  m_coupon_count  m_sale_count  m_sale_with_coupon  \\\n0         2632            35.0          18.0                 3.0   \n1         3381        122834.0       18080.0              2487.0   \n2         2099         16824.0        7227.0              1705.0   \n3         1569         33492.0         896.0               135.0   \n4         4833          8321.0         636.0               116.0   \n\n   m_min_distance  m_max_distance  m_mean_distance  m_median_distance  \n0             1.0             1.0         1.000000                1.0  \n1             0.0            10.0         1.652429                1.0  \n2             0.0            10.0         0.968072                0.0  \n3             0.0            10.0         2.260163                1.0  \n4             0.0            10.0         3.037736                2.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Merchant_id</th>\n      <th>m_coupon_count</th>\n      <th>m_sale_count</th>\n      <th>m_sale_with_coupon</th>\n      <th>m_min_distance</th>\n      <th>m_max_distance</th>\n      <th>m_mean_distance</th>\n      <th>m_median_distance</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>2632</td>\n      <td>35.0</td>\n      <td>18.0</td>\n      <td>3.0</td>\n      <td>1.0</td>\n      <td>1.0</td>\n      <td>1.000000</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>3381</td>\n      <td>122834.0</td>\n      <td>18080.0</td>\n      <td>2487.0</td>\n      <td>0.0</td>\n      <td>10.0</td>\n      <td>1.652429</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2099</td>\n      <td>16824.0</td>\n      <td>7227.0</td>\n      <td>1705.0</td>\n      <td>0.0</td>\n      <td>10.0</td>\n      <td>0.968072</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1569</td>\n      <td>33492.0</td>\n      <td>896.0</td>\n      <td>135.0</td>\n      <td>0.0</td>\n      <td>10.0</td>\n      <td>2.260163</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>4833</td>\n      <td>8321.0</td>\n      <td>636.0</td>\n      <td>116.0</td>\n      <td>0.0</td>\n      <td>10.0</td>\n      <td>3.037736</td>\n      <td>2.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merchant_feature = pd.merge(m, m1, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = pd.merge(merchant_feature, m2, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = pd.merge(merchant_feature, m3, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = pd.merge(merchant_feature, m4, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = pd.merge(merchant_feature, m5, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = pd.merge(merchant_feature, m6, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = pd.merge(merchant_feature, m7, on = 'Merchant_id', how = 'left')\n",
    "merchant_feature = merchant_feature.fillna(0)\n",
    "merchant_feature.head(5)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.769005200Z",
     "start_time": "2024-09-19T12:03:22.699064500Z"
    }
   },
   "id": "8ea19bf90990472c"
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "outputs": [
    {
     "data": {
      "text/plain": "   Merchant_id  m_coupon_count  m_sale_count  m_sale_with_coupon  \\\n0         2632            35.0          18.0                 3.0   \n1         3381        122834.0       18080.0              2487.0   \n\n   m_min_distance  m_max_distance  m_mean_distance  m_median_distance  \\\n0             1.0             1.0         1.000000                1.0   \n1             0.0            10.0         1.652429                1.0   \n\n   m_coupon_use_rate  m_sale_with_coupon_rate  \n0           0.085714                 0.166667  \n1           0.020247                 0.137555  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Merchant_id</th>\n      <th>m_coupon_count</th>\n      <th>m_sale_count</th>\n      <th>m_sale_with_coupon</th>\n      <th>m_min_distance</th>\n      <th>m_max_distance</th>\n      <th>m_mean_distance</th>\n      <th>m_median_distance</th>\n      <th>m_coupon_use_rate</th>\n      <th>m_sale_with_coupon_rate</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>2632</td>\n      <td>35.0</td>\n      <td>18.0</td>\n      <td>3.0</td>\n      <td>1.0</td>\n      <td>1.0</td>\n      <td>1.000000</td>\n      <td>1.0</td>\n      <td>0.085714</td>\n      <td>0.166667</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>3381</td>\n      <td>122834.0</td>\n      <td>18080.0</td>\n      <td>2487.0</td>\n      <td>0.0</td>\n      <td>10.0</td>\n      <td>1.652429</td>\n      <td>1.0</td>\n      <td>0.020247</td>\n      <td>0.137555</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merchant_feature['m_coupon_use_rate'] = merchant_feature['m_sale_with_coupon'].astype('float')/merchant_feature['m_coupon_count'].astype('float')\n",
    "merchant_feature['m_sale_with_coupon_rate'] = merchant_feature['m_sale_with_coupon'].astype('float')/merchant_feature['m_sale_count'].astype('float')\n",
    "merchant_feature = merchant_feature.fillna(0)\n",
    "merchant_feature.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:22.789017900Z",
     "start_time": "2024-09-19T12:03:22.722462100Z"
    }
   },
   "id": "c2e093387529d4bb"
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "outputs": [],
   "source": [
    "# add merchant feature to data2\n",
    "data3 = pd.merge(data2, merchant_feature, on = 'Merchant_id', how = 'left').fillna(0)\n",
    "\n",
    "# split data3 into train/valid\n",
    "train, valid = train_test_split(data3, test_size = 0.2, stratify = data3['label'], random_state=100)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:23.105159800Z",
     "start_time": "2024-09-19T12:03:22.739225400Z"
    }
   },
   "id": "2015c24911a87a5d"
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['discount_rate', 'discount_type', 'discount_man', 'discount_jian', 'distance', 'weekday', 'weekday_type', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7', 'u_coupon_count', 'u_buy_count', 'u_buy_with_coupon', 'u_merchant_count', 'u_min_distance', 'u_max_distance', 'u_mean_distance', 'u_median_distance', 'u_use_coupon_rate', 'u_buy_with_coupon_rate', 'm_coupon_count', 'm_sale_count', 'm_sale_with_coupon', 'm_min_distance', 'm_max_distance', 'm_mean_distance', 'm_median_distance', 'm_coupon_use_rate', 'm_sale_with_coupon_rate']\n",
      "Fitting 3 folds for each of 9 candidates, totalling 27 fits\n",
      "0.9110992339212544\n",
      "{'en__alpha': 0.001, 'en__l1_ratio': 0.01}\n"
     ]
    }
   ],
   "source": [
    "# model 3\n",
    "predictors = original_feature + user_feature.columns.tolist()[1:] + merchant_feature.columns.tolist()[1:]\n",
    "print(predictors)\n",
    "\n",
    "if not os.path.isfile('3_model.pkl'):\n",
    "    model = check_model(train, predictors)\n",
    "    print(model.best_score_)\n",
    "    print(model.best_params_)\n",
    "    with open('3_model.pkl', 'wb') as f:\n",
    "        pickle.dump(model, f)\n",
    "else:\n",
    "    with open('3_model.pkl', 'rb') as f:\n",
    "        model = pickle.load(f)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:26.424829Z",
     "start_time": "2024-09-19T12:03:23.108602200Z"
    }
   },
   "id": "542862218c957a58"
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86183\\AppData\\Local\\Temp\\ipykernel_11440\\1973849690.py:4: FutureWarning: In a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.\n",
      "  for i in validgroup:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5987840657268103\n"
     ]
    }
   ],
   "source": [
    "valid['pred_prob'] = model.predict_proba(valid[predictors])[:,1]\n",
    "validgroup = valid.groupby(['Coupon_id'])\n",
    "aucs = []\n",
    "for i in validgroup:\n",
    "    tmpdf = i[1] \n",
    "    if len(tmpdf['label'].unique()) != 2:\n",
    "        continue\n",
    "    fpr, tpr, thresholds = roc_curve(tmpdf['label'], tmpdf['pred_prob'], pos_label=1)\n",
    "    aucs.append(auc(fpr, tpr))\n",
    "print(np.average(aucs))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:27.249688Z",
     "start_time": "2024-09-19T12:03:26.425458Z"
    }
   },
   "id": "3519ee44b996d027"
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "outputs": [],
   "source": [
    "# User & Merchant\n",
    "# key of user and merchant\n",
    "um = fdf[['User_id', 'Merchant_id']].copy().drop_duplicates()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:27.360739800Z",
     "start_time": "2024-09-19T12:03:27.259240500Z"
    }
   },
   "id": "8342aad1a4536263"
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id  um_count\n0        4         1433         1\n1       35         3381         4",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>um_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4</td>\n      <td>1433</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>35</td>\n      <td>3381</td>\n      <td>4</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "um1 = fdf[['User_id', 'Merchant_id']].copy()\n",
    "um1['um_count'] = 1\n",
    "um1 = um1.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "um1.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:27.666208200Z",
     "start_time": "2024-09-19T12:03:27.369419600Z"
    }
   },
   "id": "76ba3690f34c3e78"
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id  um_buy_count\n0      165         2934             6\n1      165         4195             4",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>um_buy_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>165</td>\n      <td>2934</td>\n      <td>6</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>165</td>\n      <td>4195</td>\n      <td>4</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "um2 = fdf[fdf['Date'] != 'null'][['User_id', 'Merchant_id']].copy()\n",
    "um2['um_buy_count'] = 1\n",
    "um2 = um2.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "um2.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:27.909204900Z",
     "start_time": "2024-09-19T12:03:27.669414400Z"
    }
   },
   "id": "ce3af90e40eb5aa4"
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id  um_coupon_count\n0        4         1433                1\n1       35         3381                4",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>um_coupon_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4</td>\n      <td>1433</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>35</td>\n      <td>3381</td>\n      <td>4</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "um3 = fdf[fdf['Date_received'] != 'null'][['User_id', 'Merchant_id']].copy()\n",
    "um3['um_coupon_count'] = 1\n",
    "um3 = um3.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "um3.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:28.284151900Z",
     "start_time": "2024-09-19T12:03:27.902276100Z"
    }
   },
   "id": "b478a2cd49f99d74"
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id  um_buy_with_coupon\n0      184         3381                   1\n1      417          775                   1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>um_buy_with_coupon</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>184</td>\n      <td>3381</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>417</td>\n      <td>775</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "um4 = fdf[(fdf['Date_received'] != 'null') & (fdf['Date'] != 'null')][['User_id', 'Merchant_id']].copy()\n",
    "um4['um_buy_with_coupon'] = 1\n",
    "um4 = um4.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "um4.head(2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:28.423196900Z",
     "start_time": "2024-09-19T12:03:28.329468200Z"
    }
   },
   "id": "d9e53b9b731b6bb1"
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Merchant_id  um_count  um_buy_count  um_coupon_count  \\\n0  1439408         2632         3           1.0              2.0   \n1  1832624         3381         1           0.0              1.0   \n\n   um_buy_with_coupon  um_buy_rate  um_coupon_use_rate  \\\n0                 0.0     0.333333                 0.0   \n1                 0.0     0.000000                 0.0   \n\n   um_buy_with_coupon_rate  \n0                      0.0  \n1                      0.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Merchant_id</th>\n      <th>um_count</th>\n      <th>um_buy_count</th>\n      <th>um_coupon_count</th>\n      <th>um_buy_with_coupon</th>\n      <th>um_buy_rate</th>\n      <th>um_coupon_use_rate</th>\n      <th>um_buy_with_coupon_rate</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1439408</td>\n      <td>2632</td>\n      <td>3</td>\n      <td>1.0</td>\n      <td>2.0</td>\n      <td>0.0</td>\n      <td>0.333333</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1832624</td>\n      <td>3381</td>\n      <td>1</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>0.0</td>\n      <td>0.000000</td>\n      <td>0.0</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# merge all user merchant \n",
    "user_merchant_feature = pd.merge(um, um1, on = ['User_id','Merchant_id'], how = 'left')\n",
    "user_merchant_feature = pd.merge(user_merchant_feature, um2, on = ['User_id','Merchant_id'], how = 'left')\n",
    "user_merchant_feature = pd.merge(user_merchant_feature, um3, on = ['User_id','Merchant_id'], how = 'left')\n",
    "user_merchant_feature = pd.merge(user_merchant_feature, um4, on = ['User_id','Merchant_id'], how = 'left')\n",
    "user_merchant_feature = user_merchant_feature.fillna(0)\n",
    "\n",
    "user_merchant_feature['um_buy_rate'] = user_merchant_feature['um_buy_count'].astype('float')/user_merchant_feature['um_count'].astype('float')\n",
    "user_merchant_feature['um_coupon_use_rate'] = user_merchant_feature['um_buy_with_coupon'].astype('float')/user_merchant_feature['um_coupon_count'].astype('float')\n",
    "user_merchant_feature['um_buy_with_coupon_rate'] = user_merchant_feature['um_buy_with_coupon'].astype('float')/user_merchant_feature['um_buy_count'].astype('float')\n",
    "user_merchant_feature = user_merchant_feature.fillna(0)\n",
    "user_merchant_feature.head(2)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:29.450614700Z",
     "start_time": "2024-09-19T12:03:28.419233600Z"
    }
   },
   "id": "c1e529679ee63e2f"
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "outputs": [],
   "source": [
    "# add user_merchant_feature to data3\n",
    "data4 = pd.merge(data3, user_merchant_feature, on = ['User_id','Merchant_id'], how = 'left').fillna(0)\n",
    "\n",
    "# split data4 into train/valid\n",
    "train, valid = train_test_split(data4, test_size = 0.2, stratify = data4['label'], random_state=100)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:30.166170800Z",
     "start_time": "2024-09-19T12:03:29.450614700Z"
    }
   },
   "id": "dca8a5cde3f4c5d4"
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "40 ['discount_rate', 'discount_type', 'discount_man', 'discount_jian', 'distance', 'weekday', 'weekday_type', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7', 'u_coupon_count', 'u_buy_count', 'u_buy_with_coupon', 'u_merchant_count', 'u_min_distance', 'u_max_distance', 'u_mean_distance', 'u_median_distance', 'u_use_coupon_rate', 'u_buy_with_coupon_rate', 'm_coupon_count', 'm_sale_count', 'm_sale_with_coupon', 'm_min_distance', 'm_max_distance', 'm_mean_distance', 'm_median_distance', 'm_coupon_use_rate', 'm_sale_with_coupon_rate', 'um_count', 'um_buy_count', 'um_coupon_count', 'um_buy_with_coupon', 'um_buy_rate', 'um_coupon_use_rate', 'um_buy_with_coupon_rate']\n",
      "Fitting 3 folds for each of 9 candidates, totalling 27 fits\n",
      "0.9125591385078291\n",
      "{'en__alpha': 0.01, 'en__l1_ratio': 0.001}\n"
     ]
    }
   ],
   "source": [
    "predictors = original_feature + user_feature.columns.tolist()[1:] + \\\n",
    "             merchant_feature.columns.tolist()[1:] + \\\n",
    "             user_merchant_feature.columns.tolist()[2:]\n",
    "print(len(predictors),predictors)\n",
    "\n",
    "if not os.path.isfile('4_model.pkl'):\n",
    "    model = check_model(train, predictors)\n",
    "    print(model.best_score_)\n",
    "    print(model.best_params_)\n",
    "    with open('4_model.pkl', 'wb') as f:\n",
    "        pickle.dump(model, f)\n",
    "else:\n",
    "    with open('4_model.pkl', 'rb') as f:\n",
    "        model = pickle.load(f)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:33.848903900Z",
     "start_time": "2024-09-19T12:03:30.139264200Z"
    }
   },
   "id": "be950bb33e6ee6f4"
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86183\\AppData\\Local\\Temp\\ipykernel_11440\\1973849690.py:4: FutureWarning: In a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.\n",
      "  for i in validgroup:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6210083095109136\n"
     ]
    }
   ],
   "source": [
    "valid['pred_prob'] = model.predict_proba(valid[predictors])[:,1]\n",
    "validgroup = valid.groupby(['Coupon_id'])\n",
    "aucs = []\n",
    "for i in validgroup:\n",
    "    tmpdf = i[1] \n",
    "    if len(tmpdf['label'].unique()) != 2:\n",
    "        continue\n",
    "    fpr, tpr, thresholds = roc_curve(tmpdf['label'], tmpdf['pred_prob'], pos_label=1)\n",
    "    aucs.append(auc(fpr, tpr))\n",
    "print(np.average(aucs))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:34.791859900Z",
     "start_time": "2024-09-19T12:03:33.845865600Z"
    }
   },
   "id": "9e28ef1099405686"
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "outputs": [],
   "source": [
    "# 将上面特征处理写成function，可以方便后面重新划分数据\n",
    "def userFeature(df):\n",
    "    u = df[['User_id']].copy().drop_duplicates()\n",
    "    \n",
    "    # u_coupon_count : num of coupon received by user\n",
    "    u1 = df[df['Date_received'] != 'null'][['User_id']].copy()\n",
    "    u1['u_coupon_count'] = 1\n",
    "    u1 = u1.groupby(['User_id'], as_index = False).count()\n",
    "\n",
    "    # u_buy_count : times of user buy offline (with or without coupon)\n",
    "    u2 = df[df['Date'] != 'null'][['User_id']].copy()\n",
    "    u2['u_buy_count'] = 1\n",
    "    u2 = u2.groupby(['User_id'], as_index = False).count()\n",
    "\n",
    "    # u_buy_with_coupon : times of user buy offline (with coupon)\n",
    "    u3 = df[((df['Date'] != 'null') & (df['Date_received'] != 'null'))][['User_id']].copy()\n",
    "    u3['u_buy_with_coupon'] = 1\n",
    "    u3 = u3.groupby(['User_id'], as_index = False).count()\n",
    "\n",
    "    # u_merchant_count : num of merchant user bought from\n",
    "    u4 = df[df['Date'] != 'null'][['User_id', 'Merchant_id']].copy()\n",
    "    u4.drop_duplicates(inplace = True)\n",
    "    u4 = u4.groupby(['User_id'], as_index = False).count()\n",
    "    u4.rename(columns = {'Merchant_id':'u_merchant_count'}, inplace = True)\n",
    "\n",
    "    # u_min_distance\n",
    "    utmp = df[(df['Date'] != 'null') & (df['Date_received'] != 'null')][['User_id', 'distance']].copy()\n",
    "    utmp.replace(-1, np.nan, inplace = True)\n",
    "    u5 = utmp.groupby(['User_id'], as_index = False).min()\n",
    "    u5.rename(columns = {'distance':'u_min_distance'}, inplace = True)\n",
    "    u6 = utmp.groupby(['User_id'], as_index = False).max()\n",
    "    u6.rename(columns = {'distance':'u_max_distance'}, inplace = True)\n",
    "    u7 = utmp.groupby(['User_id'], as_index = False).mean()\n",
    "    u7.rename(columns = {'distance':'u_mean_distance'}, inplace = True)\n",
    "    u8 = utmp.groupby(['User_id'], as_index = False).median()\n",
    "    u8.rename(columns = {'distance':'u_median_distance'}, inplace = True)\n",
    "\n",
    "    user_feature = pd.merge(u, u1, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u2, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u3, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u4, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u5, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u6, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u7, on = 'User_id', how = 'left')\n",
    "    user_feature = pd.merge(user_feature, u8, on = 'User_id', how = 'left')\n",
    "\n",
    "    user_feature['u_use_coupon_rate'] = user_feature['u_buy_with_coupon'].astype('float')/user_feature['u_coupon_count'].astype('float')\n",
    "    user_feature['u_buy_with_coupon_rate'] = user_feature['u_buy_with_coupon'].astype('float')/user_feature['u_buy_count'].astype('float')\n",
    "    user_feature = user_feature.fillna(0)\n",
    "    \n",
    "    print(user_feature.columns.tolist())\n",
    "    return user_feature"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:34.811001100Z",
     "start_time": "2024-09-19T12:03:34.791859900Z"
    }
   },
   "id": "f868c8e74786ace5"
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "outputs": [],
   "source": [
    "def merchantFeature(df):\n",
    "    m = df[['Merchant_id']].copy().drop_duplicates()\n",
    "\n",
    "    # m_coupon_count : num of coupon from merchant\n",
    "    m1 = df[df['Date_received'] != 'null'][['Merchant_id']].copy()\n",
    "    m1['m_coupon_count'] = 1\n",
    "    m1 = m1.groupby(['Merchant_id'], as_index = False).count()\n",
    "\n",
    "    # m_sale_count : num of sale from merchant (with or without coupon)\n",
    "    m2 = df[df['Date'] != 'null'][['Merchant_id']].copy()\n",
    "    m2['m_sale_count'] = 1\n",
    "    m2 = m2.groupby(['Merchant_id'], as_index = False).count()\n",
    "\n",
    "    # m_sale_with_coupon : num of sale from merchant with coupon usage\n",
    "    m3 = df[(df['Date'] != 'null') & (df['Date_received'] != 'null')][['Merchant_id']].copy()\n",
    "    m3['m_sale_with_coupon'] = 1\n",
    "    m3 = m3.groupby(['Merchant_id'], as_index = False).count()\n",
    "\n",
    "    # m_min_distance\n",
    "    mtmp = df[(df['Date'] != 'null') & (df['Date_received'] != 'null')][['Merchant_id', 'distance']].copy()\n",
    "    mtmp.replace(-1, np.nan, inplace = True)\n",
    "    m4 = mtmp.groupby(['Merchant_id'], as_index = False).min()\n",
    "    m4.rename(columns = {'distance':'m_min_distance'}, inplace = True)\n",
    "    m5 = mtmp.groupby(['Merchant_id'], as_index = False).max()\n",
    "    m5.rename(columns = {'distance':'m_max_distance'}, inplace = True)\n",
    "    m6 = mtmp.groupby(['Merchant_id'], as_index = False).mean()\n",
    "    m6.rename(columns = {'distance':'m_mean_distance'}, inplace = True)\n",
    "    m7 = mtmp.groupby(['Merchant_id'], as_index = False).median()\n",
    "    m7.rename(columns = {'distance':'m_median_distance'}, inplace = True)\n",
    "\n",
    "    merchant_feature = pd.merge(m, m1, on = 'Merchant_id', how = 'left')\n",
    "    merchant_feature = pd.merge(merchant_feature, m2, on = 'Merchant_id', how = 'left')\n",
    "    merchant_feature = pd.merge(merchant_feature, m3, on = 'Merchant_id', how = 'left')\n",
    "    merchant_feature = pd.merge(merchant_feature, m4, on = 'Merchant_id', how = 'left')\n",
    "    merchant_feature = pd.merge(merchant_feature, m5, on = 'Merchant_id', how = 'left')\n",
    "    merchant_feature = pd.merge(merchant_feature, m6, on = 'Merchant_id', how = 'left')\n",
    "    merchant_feature = pd.merge(merchant_feature, m7, on = 'Merchant_id', how = 'left')\n",
    "\n",
    "    merchant_feature['m_coupon_use_rate'] = merchant_feature['m_sale_with_coupon'].astype('float')/merchant_feature['m_coupon_count'].astype('float')\n",
    "    merchant_feature['m_sale_with_coupon_rate'] = merchant_feature['m_sale_with_coupon'].astype('float')/merchant_feature['m_sale_count'].astype('float')\n",
    "    merchant_feature = merchant_feature.fillna(0)\n",
    "    \n",
    "    print(merchant_feature.columns.tolist())\n",
    "    return merchant_feature\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:34.845692100Z",
     "start_time": "2024-09-19T12:03:34.811001100Z"
    }
   },
   "id": "20c59aaee8a397fa"
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "outputs": [],
   "source": [
    "def usermerchantFeature(df):\n",
    "\n",
    "    um = df[['User_id', 'Merchant_id']].copy().drop_duplicates()\n",
    "\n",
    "    um1 = df[['User_id', 'Merchant_id']].copy()\n",
    "    um1['um_count'] = 1\n",
    "    um1 = um1.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "\n",
    "    um2 = df[df['Date'] != 'null'][['User_id', 'Merchant_id']].copy()\n",
    "    um2['um_buy_count'] = 1\n",
    "    um2 = um2.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "\n",
    "    um3 = df[df['Date_received'] != 'null'][['User_id', 'Merchant_id']].copy()\n",
    "    um3['um_coupon_count'] = 1\n",
    "    um3 = um3.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "\n",
    "    um4 = df[(df['Date_received'] != 'null') & (df['Date'] != 'null')][['User_id', 'Merchant_id']].copy()\n",
    "    um4['um_buy_with_coupon'] = 1\n",
    "    um4 = um4.groupby(['User_id', 'Merchant_id'], as_index = False).count()\n",
    "\n",
    "    user_merchant_feature = pd.merge(um, um1, on = ['User_id','Merchant_id'], how = 'left')\n",
    "    user_merchant_feature = pd.merge(user_merchant_feature, um2, on = ['User_id','Merchant_id'], how = 'left')\n",
    "    user_merchant_feature = pd.merge(user_merchant_feature, um3, on = ['User_id','Merchant_id'], how = 'left')\n",
    "    user_merchant_feature = pd.merge(user_merchant_feature, um4, on = ['User_id','Merchant_id'], how = 'left')\n",
    "    user_merchant_feature = user_merchant_feature.fillna(0)\n",
    "\n",
    "    user_merchant_feature['um_buy_rate'] = user_merchant_feature['um_buy_count'].astype('float')/user_merchant_feature['um_count'].astype('float')\n",
    "    user_merchant_feature['um_coupon_use_rate'] = user_merchant_feature['um_buy_with_coupon'].astype('float')/user_merchant_feature['um_coupon_count'].astype('float')\n",
    "    user_merchant_feature['um_buy_with_coupon_rate'] = user_merchant_feature['um_buy_with_coupon'].astype('float')/user_merchant_feature['um_buy_count'].astype('float')\n",
    "    user_merchant_feature = user_merchant_feature.fillna(0)\n",
    "\n",
    "    print(user_merchant_feature.columns.tolist())\n",
    "    return user_merchant_feature\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:34.845692100Z",
     "start_time": "2024-09-19T12:03:34.825020500Z"
    }
   },
   "id": "54acfdc1c9014a48"
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "outputs": [],
   "source": [
    "def featureProcess(feature, train, test):\n",
    "    \"\"\"\n",
    "    feature engineering from feature data\n",
    "    then assign user, merchant, and user_merchant feature for train and test \n",
    "    \"\"\"\n",
    "    \n",
    "    user_feature = userFeature(feature)\n",
    "    merchant_feature = merchantFeature(feature)\n",
    "    user_merchant_feature = usermerchantFeature(feature)\n",
    "    \n",
    "    train = pd.merge(train, user_feature, on = 'User_id', how = 'left')\n",
    "    train = pd.merge(train, merchant_feature, on = 'Merchant_id', how = 'left')\n",
    "    train = pd.merge(train, user_merchant_feature, on = ['User_id', 'Merchant_id'], how = 'left')\n",
    "    train = train.fillna(0)\n",
    "    \n",
    "    test = pd.merge(test, user_feature, on = 'User_id', how = 'left')\n",
    "    test = pd.merge(test, merchant_feature, on = 'Merchant_id', how = 'left')\n",
    "    test = pd.merge(test, user_merchant_feature, on = ['User_id', 'Merchant_id'], how = 'left')\n",
    "    test = test.fillna(0)\n",
    "    \n",
    "    return train, test"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:34.845692100Z",
     "start_time": "2024-09-19T12:03:34.831771900Z"
    }
   },
   "id": "9e068f7ef35bc647"
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    229715\n",
      "1     22871\n",
      "Name: label, dtype: int64\n",
      "['User_id', 'u_coupon_count', 'u_buy_count', 'u_buy_with_coupon', 'u_merchant_count', 'u_min_distance', 'u_max_distance', 'u_mean_distance', 'u_median_distance', 'u_use_coupon_rate', 'u_buy_with_coupon_rate']\n",
      "['Merchant_id', 'm_coupon_count', 'm_sale_count', 'm_sale_with_coupon', 'm_min_distance', 'm_max_distance', 'm_mean_distance', 'm_median_distance', 'm_coupon_use_rate', 'm_sale_with_coupon_rate']\n",
      "['User_id', 'Merchant_id', 'um_count', 'um_buy_count', 'um_coupon_count', 'um_buy_with_coupon', 'um_buy_rate', 'um_coupon_use_rate', 'um_buy_with_coupon_rate']\n"
     ]
    }
   ],
   "source": [
    "# 重复上面结果\n",
    "# repeat result above and process dftest data\n",
    "feature = dfoff[(dfoff['Date'] < '20160516') | ((dfoff['Date'] == 'null') & (dfoff['Date_received'] < '20160516'))].copy()\n",
    "data = dfoff[(dfoff['Date_received'] >= '20160516') & (dfoff['Date_received'] <= '20160615')].copy()\n",
    "print(data['label'].value_counts())\n",
    "\n",
    "# feature engineering\n",
    "train, test = featureProcess(feature, data, dftest)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:40.499452100Z",
     "start_time": "2024-09-19T12:03:34.839359700Z"
    }
   },
   "id": "a1d3cdec52b601f1"
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "40 ['discount_rate', 'discount_man', 'discount_jian', 'discount_type', 'distance', 'weekday', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', 'weekday_7', 'weekday_type', 'u_coupon_count', 'u_buy_count', 'u_buy_with_coupon', 'u_merchant_count', 'u_min_distance', 'u_max_distance', 'u_mean_distance', 'u_median_distance', 'u_use_coupon_rate', 'u_buy_with_coupon_rate', 'm_coupon_count', 'm_sale_count', 'm_sale_with_coupon', 'm_min_distance', 'm_max_distance', 'm_mean_distance', 'm_median_distance', 'm_coupon_use_rate', 'm_sale_with_coupon_rate', 'um_count', 'um_buy_count', 'um_coupon_count', 'um_buy_with_coupon', 'um_buy_rate', 'um_coupon_use_rate', 'um_buy_with_coupon_rate']\n"
     ]
    }
   ],
   "source": [
    "# features\n",
    "predictors = ['discount_rate', 'discount_man', 'discount_jian', 'discount_type', 'distance',\n",
    "              'weekday', 'weekday_1', 'weekday_2', 'weekday_3', 'weekday_4', 'weekday_5', 'weekday_6', \n",
    "              'weekday_7', 'weekday_type', \n",
    "              'u_coupon_count', 'u_buy_count', 'u_buy_with_coupon', 'u_merchant_count', 'u_min_distance', \n",
    "              'u_max_distance', 'u_mean_distance', 'u_median_distance', 'u_use_coupon_rate', 'u_buy_with_coupon_rate', \n",
    "              'm_coupon_count', 'm_sale_count', 'm_sale_with_coupon', 'm_min_distance', 'm_max_distance',\n",
    "              'm_mean_distance', 'm_median_distance', 'm_coupon_use_rate', 'm_sale_with_coupon_rate', 'um_count', 'um_buy_count', \n",
    "              'um_coupon_count', 'um_buy_with_coupon', 'um_buy_rate', 'um_coupon_use_rate', 'um_buy_with_coupon_rate']\n",
    "print(len(predictors), predictors)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:40.509380500Z",
     "start_time": "2024-09-19T12:03:40.499452100Z"
    }
   },
   "id": "106b614ae6528999"
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "outputs": [],
   "source": [
    "trainSub, validSub = train_test_split(train, test_size = 0.2, stratify = train['label'], random_state=100)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:40.699049900Z",
     "start_time": "2024-09-19T12:03:40.504677200Z"
    }
   },
   "id": "5e5836aedce8beb1"
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 9 candidates, totalling 27 fits\n"
     ]
    }
   ],
   "source": [
    "# 线性模型\n",
    "# linear model\n",
    "model = check_model(trainSub, predictors)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:44.117007400Z",
     "start_time": "2024-09-19T12:03:40.692054800Z"
    }
   },
   "id": "1d0bc34340337a2b"
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86183\\AppData\\Local\\Temp\\ipykernel_11440\\262143630.py:4: FutureWarning: In a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.\n",
      "  for i in validgroup:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.626300983184737\n"
     ]
    }
   ],
   "source": [
    "validSub['pred_prob'] = model.predict_proba(validSub[predictors])[:,1]\n",
    "validgroup = validSub.groupby(['Coupon_id'])\n",
    "aucs = []\n",
    "for i in validgroup:\n",
    "    tmpdf = i[1] \n",
    "    if len(tmpdf['label'].unique()) != 2:\n",
    "        continue\n",
    "    fpr, tpr, thresholds = roc_curve(tmpdf['label'], tmpdf['pred_prob'], pos_label=1)\n",
    "    aucs.append(auc(fpr, tpr))\n",
    "print(np.average(aucs))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:03:44.934542400Z",
     "start_time": "2024-09-19T12:03:44.119012400Z"
    }
   },
   "id": "5a92a248e6d14193"
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\tvalidation_0-logloss:0.32469\n",
      "[1]\tvalidation_0-logloss:0.32348\n",
      "[2]\tvalidation_0-logloss:0.32226\n",
      "[3]\tvalidation_0-logloss:0.32107\n",
      "[4]\tvalidation_0-logloss:0.31991\n",
      "[5]\tvalidation_0-logloss:0.31878\n",
      "[6]\tvalidation_0-logloss:0.31765\n",
      "[7]\tvalidation_0-logloss:0.31663\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\anaconda3\\lib\\site-packages\\xgboost\\core.py:158: UserWarning: [20:03:45] WARNING: C:\\buildkite-agent\\builds\\buildkite-windows-cpu-autoscaling-group-i-0015a694724fa8361-1\\xgboost\\xgboost-ci-windows\\src\\learner.cc:740: \n",
      "Parameters: { \"verbose\" } are not used.\n",
      "\n",
      "  warnings.warn(smsg, UserWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[8]\tvalidation_0-logloss:0.31553\n",
      "[9]\tvalidation_0-logloss:0.31446\n",
      "[10]\tvalidation_0-logloss:0.31341\n",
      "[11]\tvalidation_0-logloss:0.31238\n",
      "[12]\tvalidation_0-logloss:0.31137\n",
      "[13]\tvalidation_0-logloss:0.31039\n",
      "[14]\tvalidation_0-logloss:0.30941\n",
      "[15]\tvalidation_0-logloss:0.30847\n",
      "[16]\tvalidation_0-logloss:0.30752\n",
      "[17]\tvalidation_0-logloss:0.30658\n",
      "[18]\tvalidation_0-logloss:0.30565\n",
      "[19]\tvalidation_0-logloss:0.30476\n",
      "[20]\tvalidation_0-logloss:0.30386\n",
      "[21]\tvalidation_0-logloss:0.30299\n",
      "[22]\tvalidation_0-logloss:0.30213\n",
      "[23]\tvalidation_0-logloss:0.30127\n",
      "[24]\tvalidation_0-logloss:0.30044\n",
      "[25]\tvalidation_0-logloss:0.29967\n",
      "[26]\tvalidation_0-logloss:0.29886\n",
      "[27]\tvalidation_0-logloss:0.29806\n",
      "[28]\tvalidation_0-logloss:0.29726\n",
      "[29]\tvalidation_0-logloss:0.29649\n",
      "[30]\tvalidation_0-logloss:0.29571\n",
      "[31]\tvalidation_0-logloss:0.29493\n",
      "[32]\tvalidation_0-logloss:0.29424\n",
      "[33]\tvalidation_0-logloss:0.29350\n",
      "[34]\tvalidation_0-logloss:0.29279\n",
      "[35]\tvalidation_0-logloss:0.29206\n",
      "[36]\tvalidation_0-logloss:0.29137\n",
      "[37]\tvalidation_0-logloss:0.29068\n",
      "[38]\tvalidation_0-logloss:0.28998\n",
      "[39]\tvalidation_0-logloss:0.28931\n",
      "[40]\tvalidation_0-logloss:0.28863\n",
      "[41]\tvalidation_0-logloss:0.28798\n",
      "[42]\tvalidation_0-logloss:0.28732\n",
      "[43]\tvalidation_0-logloss:0.28667\n",
      "[44]\tvalidation_0-logloss:0.28603\n",
      "[45]\tvalidation_0-logloss:0.28539\n",
      "[46]\tvalidation_0-logloss:0.28475\n",
      "[47]\tvalidation_0-logloss:0.28413\n",
      "[48]\tvalidation_0-logloss:0.28352\n",
      "[49]\tvalidation_0-logloss:0.28292\n",
      "[50]\tvalidation_0-logloss:0.28233\n",
      "[51]\tvalidation_0-logloss:0.28174\n",
      "[52]\tvalidation_0-logloss:0.28115\n",
      "[53]\tvalidation_0-logloss:0.28057\n",
      "[54]\tvalidation_0-logloss:0.27999\n",
      "[55]\tvalidation_0-logloss:0.27943\n",
      "[56]\tvalidation_0-logloss:0.27887\n",
      "[57]\tvalidation_0-logloss:0.27833\n",
      "[58]\tvalidation_0-logloss:0.27779\n",
      "[59]\tvalidation_0-logloss:0.27728\n",
      "[60]\tvalidation_0-logloss:0.27677\n",
      "[61]\tvalidation_0-logloss:0.27626\n",
      "[62]\tvalidation_0-logloss:0.27576\n",
      "[63]\tvalidation_0-logloss:0.27527\n",
      "[64]\tvalidation_0-logloss:0.27478\n",
      "[65]\tvalidation_0-logloss:0.27431\n",
      "[66]\tvalidation_0-logloss:0.27382\n",
      "[67]\tvalidation_0-logloss:0.27335\n",
      "[68]\tvalidation_0-logloss:0.27287\n",
      "[69]\tvalidation_0-logloss:0.27239\n",
      "[70]\tvalidation_0-logloss:0.27193\n",
      "[71]\tvalidation_0-logloss:0.27148\n",
      "[72]\tvalidation_0-logloss:0.27105\n",
      "[73]\tvalidation_0-logloss:0.27060\n",
      "[74]\tvalidation_0-logloss:0.27017\n",
      "[75]\tvalidation_0-logloss:0.26975\n",
      "[76]\tvalidation_0-logloss:0.26933\n",
      "[77]\tvalidation_0-logloss:0.26890\n",
      "[78]\tvalidation_0-logloss:0.26852\n",
      "[79]\tvalidation_0-logloss:0.26810\n",
      "[80]\tvalidation_0-logloss:0.26769\n",
      "[81]\tvalidation_0-logloss:0.26728\n",
      "[82]\tvalidation_0-logloss:0.26690\n",
      "[83]\tvalidation_0-logloss:0.26649\n",
      "[84]\tvalidation_0-logloss:0.26610\n",
      "[85]\tvalidation_0-logloss:0.26571\n",
      "[86]\tvalidation_0-logloss:0.26533\n",
      "[87]\tvalidation_0-logloss:0.26497\n",
      "[88]\tvalidation_0-logloss:0.26461\n",
      "[89]\tvalidation_0-logloss:0.26425\n",
      "[90]\tvalidation_0-logloss:0.26388\n",
      "[91]\tvalidation_0-logloss:0.26351\n",
      "[92]\tvalidation_0-logloss:0.26318\n",
      "[93]\tvalidation_0-logloss:0.26284\n",
      "[94]\tvalidation_0-logloss:0.26250\n",
      "[95]\tvalidation_0-logloss:0.26216\n",
      "[96]\tvalidation_0-logloss:0.26183\n",
      "[97]\tvalidation_0-logloss:0.26151\n",
      "[98]\tvalidation_0-logloss:0.26118\n",
      "[99]\tvalidation_0-logloss:0.26085\n",
      "[100]\tvalidation_0-logloss:0.26054\n",
      "[101]\tvalidation_0-logloss:0.26023\n",
      "[102]\tvalidation_0-logloss:0.25992\n",
      "[103]\tvalidation_0-logloss:0.25962\n",
      "[104]\tvalidation_0-logloss:0.25930\n",
      "[105]\tvalidation_0-logloss:0.25900\n",
      "[106]\tvalidation_0-logloss:0.25870\n",
      "[107]\tvalidation_0-logloss:0.25841\n",
      "[108]\tvalidation_0-logloss:0.25814\n",
      "[109]\tvalidation_0-logloss:0.25785\n",
      "[110]\tvalidation_0-logloss:0.25757\n",
      "[111]\tvalidation_0-logloss:0.25728\n",
      "[112]\tvalidation_0-logloss:0.25700\n",
      "[113]\tvalidation_0-logloss:0.25671\n",
      "[114]\tvalidation_0-logloss:0.25644\n",
      "[115]\tvalidation_0-logloss:0.25619\n",
      "[116]\tvalidation_0-logloss:0.25594\n",
      "[117]\tvalidation_0-logloss:0.25569\n",
      "[118]\tvalidation_0-logloss:0.25542\n",
      "[119]\tvalidation_0-logloss:0.25516\n",
      "[120]\tvalidation_0-logloss:0.25490\n",
      "[121]\tvalidation_0-logloss:0.25466\n",
      "[122]\tvalidation_0-logloss:0.25442\n",
      "[123]\tvalidation_0-logloss:0.25418\n",
      "[124]\tvalidation_0-logloss:0.25394\n",
      "[125]\tvalidation_0-logloss:0.25367\n",
      "[126]\tvalidation_0-logloss:0.25344\n",
      "[127]\tvalidation_0-logloss:0.25321\n",
      "[128]\tvalidation_0-logloss:0.25295\n",
      "[129]\tvalidation_0-logloss:0.25273\n",
      "[130]\tvalidation_0-logloss:0.25247\n",
      "[131]\tvalidation_0-logloss:0.25225\n",
      "[132]\tvalidation_0-logloss:0.25203\n",
      "[133]\tvalidation_0-logloss:0.25182\n",
      "[134]\tvalidation_0-logloss:0.25162\n",
      "[135]\tvalidation_0-logloss:0.25139\n",
      "[136]\tvalidation_0-logloss:0.25118\n",
      "[137]\tvalidation_0-logloss:0.25095\n",
      "[138]\tvalidation_0-logloss:0.25075\n",
      "[139]\tvalidation_0-logloss:0.25055\n",
      "[140]\tvalidation_0-logloss:0.25035\n",
      "[141]\tvalidation_0-logloss:0.25015\n",
      "[142]\tvalidation_0-logloss:0.24998\n",
      "[143]\tvalidation_0-logloss:0.24977\n",
      "[144]\tvalidation_0-logloss:0.24957\n",
      "[145]\tvalidation_0-logloss:0.24934\n",
      "[146]\tvalidation_0-logloss:0.24915\n",
      "[147]\tvalidation_0-logloss:0.24898\n",
      "[148]\tvalidation_0-logloss:0.24880\n",
      "[149]\tvalidation_0-logloss:0.24862\n",
      "[150]\tvalidation_0-logloss:0.24844\n",
      "[151]\tvalidation_0-logloss:0.24826\n",
      "[152]\tvalidation_0-logloss:0.24810\n",
      "[153]\tvalidation_0-logloss:0.24793\n",
      "[154]\tvalidation_0-logloss:0.24776\n",
      "[155]\tvalidation_0-logloss:0.24759\n",
      "[156]\tvalidation_0-logloss:0.24738\n",
      "[157]\tvalidation_0-logloss:0.24717\n",
      "[158]\tvalidation_0-logloss:0.24701\n",
      "[159]\tvalidation_0-logloss:0.24685\n",
      "[160]\tvalidation_0-logloss:0.24669\n",
      "[161]\tvalidation_0-logloss:0.24648\n",
      "[162]\tvalidation_0-logloss:0.24632\n",
      "[163]\tvalidation_0-logloss:0.24616\n",
      "[164]\tvalidation_0-logloss:0.24600\n",
      "[165]\tvalidation_0-logloss:0.24585\n",
      "[166]\tvalidation_0-logloss:0.24569\n",
      "[167]\tvalidation_0-logloss:0.24554\n",
      "[168]\tvalidation_0-logloss:0.24536\n",
      "[169]\tvalidation_0-logloss:0.24522\n",
      "[170]\tvalidation_0-logloss:0.24507\n",
      "[171]\tvalidation_0-logloss:0.24492\n",
      "[172]\tvalidation_0-logloss:0.24478\n",
      "[173]\tvalidation_0-logloss:0.24465\n",
      "[174]\tvalidation_0-logloss:0.24451\n",
      "[175]\tvalidation_0-logloss:0.24437\n",
      "[176]\tvalidation_0-logloss:0.24423\n",
      "[177]\tvalidation_0-logloss:0.24409\n",
      "[178]\tvalidation_0-logloss:0.24395\n",
      "[179]\tvalidation_0-logloss:0.24381\n",
      "[180]\tvalidation_0-logloss:0.24365\n",
      "[181]\tvalidation_0-logloss:0.24352\n",
      "[182]\tvalidation_0-logloss:0.24338\n",
      "[183]\tvalidation_0-logloss:0.24325\n",
      "[184]\tvalidation_0-logloss:0.24313\n",
      "[185]\tvalidation_0-logloss:0.24300\n",
      "[186]\tvalidation_0-logloss:0.24284\n",
      "[187]\tvalidation_0-logloss:0.24272\n",
      "[188]\tvalidation_0-logloss:0.24260\n",
      "[189]\tvalidation_0-logloss:0.24248\n",
      "[190]\tvalidation_0-logloss:0.24236\n",
      "[191]\tvalidation_0-logloss:0.24220\n",
      "[192]\tvalidation_0-logloss:0.24205\n",
      "[193]\tvalidation_0-logloss:0.24193\n",
      "[194]\tvalidation_0-logloss:0.24182\n",
      "[195]\tvalidation_0-logloss:0.24169\n",
      "[196]\tvalidation_0-logloss:0.24158\n",
      "[197]\tvalidation_0-logloss:0.24147\n",
      "[198]\tvalidation_0-logloss:0.24131\n",
      "[199]\tvalidation_0-logloss:0.24120\n",
      "[200]\tvalidation_0-logloss:0.24110\n",
      "[201]\tvalidation_0-logloss:0.24099\n",
      "[202]\tvalidation_0-logloss:0.24089\n",
      "[203]\tvalidation_0-logloss:0.24078\n",
      "[204]\tvalidation_0-logloss:0.24068\n",
      "[205]\tvalidation_0-logloss:0.24057\n",
      "[206]\tvalidation_0-logloss:0.24047\n",
      "[207]\tvalidation_0-logloss:0.24037\n",
      "[208]\tvalidation_0-logloss:0.24027\n",
      "[209]\tvalidation_0-logloss:0.24018\n",
      "[210]\tvalidation_0-logloss:0.24009\n",
      "[211]\tvalidation_0-logloss:0.23999\n",
      "[212]\tvalidation_0-logloss:0.23990\n",
      "[213]\tvalidation_0-logloss:0.23980\n",
      "[214]\tvalidation_0-logloss:0.23970\n",
      "[215]\tvalidation_0-logloss:0.23957\n",
      "[216]\tvalidation_0-logloss:0.23947\n",
      "[217]\tvalidation_0-logloss:0.23937\n",
      "[218]\tvalidation_0-logloss:0.23929\n",
      "[219]\tvalidation_0-logloss:0.23916\n",
      "[220]\tvalidation_0-logloss:0.23907\n",
      "[221]\tvalidation_0-logloss:0.23898\n",
      "[222]\tvalidation_0-logloss:0.23890\n",
      "[223]\tvalidation_0-logloss:0.23882\n",
      "[224]\tvalidation_0-logloss:0.23874\n",
      "[225]\tvalidation_0-logloss:0.23866\n",
      "[226]\tvalidation_0-logloss:0.23856\n",
      "[227]\tvalidation_0-logloss:0.23848\n",
      "[228]\tvalidation_0-logloss:0.23835\n",
      "[229]\tvalidation_0-logloss:0.23827\n",
      "[230]\tvalidation_0-logloss:0.23819\n",
      "[231]\tvalidation_0-logloss:0.23808\n",
      "[232]\tvalidation_0-logloss:0.23800\n",
      "[233]\tvalidation_0-logloss:0.23786\n",
      "[234]\tvalidation_0-logloss:0.23778\n",
      "[235]\tvalidation_0-logloss:0.23768\n",
      "[236]\tvalidation_0-logloss:0.23760\n",
      "[237]\tvalidation_0-logloss:0.23753\n",
      "[238]\tvalidation_0-logloss:0.23742\n",
      "[239]\tvalidation_0-logloss:0.23734\n",
      "[240]\tvalidation_0-logloss:0.23727\n",
      "[241]\tvalidation_0-logloss:0.23720\n",
      "[242]\tvalidation_0-logloss:0.23712\n",
      "[243]\tvalidation_0-logloss:0.23706\n",
      "[244]\tvalidation_0-logloss:0.23699\n",
      "[245]\tvalidation_0-logloss:0.23692\n",
      "[246]\tvalidation_0-logloss:0.23685\n",
      "[247]\tvalidation_0-logloss:0.23679\n",
      "[248]\tvalidation_0-logloss:0.23672\n",
      "[249]\tvalidation_0-logloss:0.23664\n",
      "[250]\tvalidation_0-logloss:0.23658\n",
      "[251]\tvalidation_0-logloss:0.23651\n",
      "[252]\tvalidation_0-logloss:0.23645\n",
      "[253]\tvalidation_0-logloss:0.23639\n",
      "[254]\tvalidation_0-logloss:0.23630\n",
      "[255]\tvalidation_0-logloss:0.23621\n",
      "[256]\tvalidation_0-logloss:0.23615\n",
      "[257]\tvalidation_0-logloss:0.23608\n",
      "[258]\tvalidation_0-logloss:0.23602\n",
      "[259]\tvalidation_0-logloss:0.23596\n",
      "[260]\tvalidation_0-logloss:0.23590\n",
      "[261]\tvalidation_0-logloss:0.23581\n",
      "[262]\tvalidation_0-logloss:0.23574\n",
      "[263]\tvalidation_0-logloss:0.23565\n",
      "[264]\tvalidation_0-logloss:0.23559\n",
      "[265]\tvalidation_0-logloss:0.23553\n",
      "[266]\tvalidation_0-logloss:0.23545\n",
      "[267]\tvalidation_0-logloss:0.23539\n",
      "[268]\tvalidation_0-logloss:0.23533\n",
      "[269]\tvalidation_0-logloss:0.23528\n",
      "[270]\tvalidation_0-logloss:0.23523\n",
      "[271]\tvalidation_0-logloss:0.23518\n",
      "[272]\tvalidation_0-logloss:0.23513\n",
      "[273]\tvalidation_0-logloss:0.23506\n",
      "[274]\tvalidation_0-logloss:0.23501\n",
      "[275]\tvalidation_0-logloss:0.23492\n",
      "[276]\tvalidation_0-logloss:0.23488\n",
      "[277]\tvalidation_0-logloss:0.23482\n",
      "[278]\tvalidation_0-logloss:0.23475\n",
      "[279]\tvalidation_0-logloss:0.23470\n",
      "[280]\tvalidation_0-logloss:0.23462\n",
      "[281]\tvalidation_0-logloss:0.23457\n",
      "[282]\tvalidation_0-logloss:0.23452\n",
      "[283]\tvalidation_0-logloss:0.23444\n",
      "[284]\tvalidation_0-logloss:0.23436\n",
      "[285]\tvalidation_0-logloss:0.23429\n",
      "[286]\tvalidation_0-logloss:0.23423\n",
      "[287]\tvalidation_0-logloss:0.23418\n",
      "[288]\tvalidation_0-logloss:0.23413\n",
      "[289]\tvalidation_0-logloss:0.23405\n",
      "[290]\tvalidation_0-logloss:0.23399\n",
      "[291]\tvalidation_0-logloss:0.23393\n",
      "[292]\tvalidation_0-logloss:0.23389\n",
      "[293]\tvalidation_0-logloss:0.23383\n",
      "[294]\tvalidation_0-logloss:0.23378\n",
      "[295]\tvalidation_0-logloss:0.23373\n",
      "[296]\tvalidation_0-logloss:0.23366\n",
      "[297]\tvalidation_0-logloss:0.23361\n",
      "[298]\tvalidation_0-logloss:0.23356\n",
      "[299]\tvalidation_0-logloss:0.23350\n",
      "[300]\tvalidation_0-logloss:0.23346\n",
      "[301]\tvalidation_0-logloss:0.23342\n",
      "[302]\tvalidation_0-logloss:0.23336\n",
      "[303]\tvalidation_0-logloss:0.23331\n",
      "[304]\tvalidation_0-logloss:0.23326\n",
      "[305]\tvalidation_0-logloss:0.23319\n",
      "[306]\tvalidation_0-logloss:0.23312\n",
      "[307]\tvalidation_0-logloss:0.23308\n",
      "[308]\tvalidation_0-logloss:0.23301\n",
      "[309]\tvalidation_0-logloss:0.23294\n",
      "[310]\tvalidation_0-logloss:0.23288\n",
      "[311]\tvalidation_0-logloss:0.23281\n",
      "[312]\tvalidation_0-logloss:0.23277\n",
      "[313]\tvalidation_0-logloss:0.23272\n",
      "[314]\tvalidation_0-logloss:0.23268\n",
      "[315]\tvalidation_0-logloss:0.23261\n",
      "[316]\tvalidation_0-logloss:0.23255\n",
      "[317]\tvalidation_0-logloss:0.23252\n",
      "[318]\tvalidation_0-logloss:0.23247\n",
      "[319]\tvalidation_0-logloss:0.23240\n",
      "[320]\tvalidation_0-logloss:0.23236\n",
      "[321]\tvalidation_0-logloss:0.23230\n",
      "[322]\tvalidation_0-logloss:0.23225\n",
      "[323]\tvalidation_0-logloss:0.23221\n",
      "[324]\tvalidation_0-logloss:0.23217\n",
      "[325]\tvalidation_0-logloss:0.23210\n",
      "[326]\tvalidation_0-logloss:0.23204\n",
      "[327]\tvalidation_0-logloss:0.23198\n",
      "[328]\tvalidation_0-logloss:0.23192\n",
      "[329]\tvalidation_0-logloss:0.23187\n",
      "[330]\tvalidation_0-logloss:0.23182\n",
      "[331]\tvalidation_0-logloss:0.23176\n",
      "[332]\tvalidation_0-logloss:0.23172\n",
      "[333]\tvalidation_0-logloss:0.23167\n",
      "[334]\tvalidation_0-logloss:0.23163\n",
      "[335]\tvalidation_0-logloss:0.23157\n",
      "[336]\tvalidation_0-logloss:0.23153\n",
      "[337]\tvalidation_0-logloss:0.23148\n",
      "[338]\tvalidation_0-logloss:0.23144\n",
      "[339]\tvalidation_0-logloss:0.23140\n",
      "[340]\tvalidation_0-logloss:0.23136\n",
      "[341]\tvalidation_0-logloss:0.23131\n",
      "[342]\tvalidation_0-logloss:0.23128\n",
      "[343]\tvalidation_0-logloss:0.23123\n",
      "[344]\tvalidation_0-logloss:0.23120\n",
      "[345]\tvalidation_0-logloss:0.23117\n",
      "[346]\tvalidation_0-logloss:0.23114\n",
      "[347]\tvalidation_0-logloss:0.23109\n",
      "[348]\tvalidation_0-logloss:0.23106\n",
      "[349]\tvalidation_0-logloss:0.23101\n",
      "[350]\tvalidation_0-logloss:0.23098\n",
      "[351]\tvalidation_0-logloss:0.23095\n",
      "[352]\tvalidation_0-logloss:0.23093\n",
      "[353]\tvalidation_0-logloss:0.23089\n",
      "[354]\tvalidation_0-logloss:0.23086\n",
      "[355]\tvalidation_0-logloss:0.23083\n",
      "[356]\tvalidation_0-logloss:0.23080\n",
      "[357]\tvalidation_0-logloss:0.23077\n",
      "[358]\tvalidation_0-logloss:0.23073\n",
      "[359]\tvalidation_0-logloss:0.23070\n",
      "[360]\tvalidation_0-logloss:0.23067\n",
      "[361]\tvalidation_0-logloss:0.23063\n",
      "[362]\tvalidation_0-logloss:0.23060\n",
      "[363]\tvalidation_0-logloss:0.23056\n",
      "[364]\tvalidation_0-logloss:0.23051\n",
      "[365]\tvalidation_0-logloss:0.23048\n",
      "[366]\tvalidation_0-logloss:0.23046\n",
      "[367]\tvalidation_0-logloss:0.23042\n",
      "[368]\tvalidation_0-logloss:0.23038\n",
      "[369]\tvalidation_0-logloss:0.23035\n",
      "[370]\tvalidation_0-logloss:0.23030\n",
      "[371]\tvalidation_0-logloss:0.23026\n",
      "[372]\tvalidation_0-logloss:0.23022\n",
      "[373]\tvalidation_0-logloss:0.23017\n",
      "[374]\tvalidation_0-logloss:0.23014\n",
      "[375]\tvalidation_0-logloss:0.23011\n",
      "[376]\tvalidation_0-logloss:0.23007\n",
      "[377]\tvalidation_0-logloss:0.23003\n",
      "[378]\tvalidation_0-logloss:0.22999\n",
      "[379]\tvalidation_0-logloss:0.22995\n",
      "[380]\tvalidation_0-logloss:0.22992\n",
      "[381]\tvalidation_0-logloss:0.22988\n",
      "[382]\tvalidation_0-logloss:0.22985\n",
      "[383]\tvalidation_0-logloss:0.22982\n",
      "[384]\tvalidation_0-logloss:0.22979\n",
      "[385]\tvalidation_0-logloss:0.22976\n",
      "[386]\tvalidation_0-logloss:0.22973\n",
      "[387]\tvalidation_0-logloss:0.22970\n",
      "[388]\tvalidation_0-logloss:0.22967\n",
      "[389]\tvalidation_0-logloss:0.22964\n",
      "[390]\tvalidation_0-logloss:0.22962\n",
      "[391]\tvalidation_0-logloss:0.22959\n",
      "[392]\tvalidation_0-logloss:0.22956\n",
      "[393]\tvalidation_0-logloss:0.22953\n",
      "[394]\tvalidation_0-logloss:0.22950\n",
      "[395]\tvalidation_0-logloss:0.22947\n",
      "[396]\tvalidation_0-logloss:0.22944\n",
      "[397]\tvalidation_0-logloss:0.22941\n",
      "[398]\tvalidation_0-logloss:0.22938\n",
      "[399]\tvalidation_0-logloss:0.22935\n",
      "[400]\tvalidation_0-logloss:0.22932\n",
      "[401]\tvalidation_0-logloss:0.22929\n",
      "[402]\tvalidation_0-logloss:0.22926\n",
      "[403]\tvalidation_0-logloss:0.22924\n",
      "[404]\tvalidation_0-logloss:0.22922\n",
      "[405]\tvalidation_0-logloss:0.22919\n",
      "[406]\tvalidation_0-logloss:0.22917\n",
      "[407]\tvalidation_0-logloss:0.22914\n",
      "[408]\tvalidation_0-logloss:0.22911\n",
      "[409]\tvalidation_0-logloss:0.22907\n",
      "[410]\tvalidation_0-logloss:0.22905\n",
      "[411]\tvalidation_0-logloss:0.22903\n",
      "[412]\tvalidation_0-logloss:0.22899\n",
      "[413]\tvalidation_0-logloss:0.22896\n",
      "[414]\tvalidation_0-logloss:0.22893\n",
      "[415]\tvalidation_0-logloss:0.22889\n",
      "[416]\tvalidation_0-logloss:0.22886\n",
      "[417]\tvalidation_0-logloss:0.22884\n",
      "[418]\tvalidation_0-logloss:0.22882\n",
      "[419]\tvalidation_0-logloss:0.22879\n",
      "[420]\tvalidation_0-logloss:0.22877\n",
      "[421]\tvalidation_0-logloss:0.22874\n",
      "[422]\tvalidation_0-logloss:0.22871\n",
      "[423]\tvalidation_0-logloss:0.22868\n",
      "[424]\tvalidation_0-logloss:0.22866\n",
      "[425]\tvalidation_0-logloss:0.22862\n",
      "[426]\tvalidation_0-logloss:0.22860\n",
      "[427]\tvalidation_0-logloss:0.22857\n",
      "[428]\tvalidation_0-logloss:0.22855\n",
      "[429]\tvalidation_0-logloss:0.22852\n",
      "[430]\tvalidation_0-logloss:0.22850\n",
      "[431]\tvalidation_0-logloss:0.22848\n",
      "[432]\tvalidation_0-logloss:0.22846\n",
      "[433]\tvalidation_0-logloss:0.22844\n",
      "[434]\tvalidation_0-logloss:0.22842\n",
      "[435]\tvalidation_0-logloss:0.22839\n",
      "[436]\tvalidation_0-logloss:0.22836\n",
      "[437]\tvalidation_0-logloss:0.22834\n",
      "[438]\tvalidation_0-logloss:0.22832\n",
      "[439]\tvalidation_0-logloss:0.22830\n",
      "[440]\tvalidation_0-logloss:0.22828\n",
      "[441]\tvalidation_0-logloss:0.22825\n",
      "[442]\tvalidation_0-logloss:0.22823\n",
      "[443]\tvalidation_0-logloss:0.22821\n",
      "[444]\tvalidation_0-logloss:0.22820\n",
      "[445]\tvalidation_0-logloss:0.22817\n",
      "[446]\tvalidation_0-logloss:0.22815\n",
      "[447]\tvalidation_0-logloss:0.22812\n",
      "[448]\tvalidation_0-logloss:0.22811\n",
      "[449]\tvalidation_0-logloss:0.22809\n",
      "[450]\tvalidation_0-logloss:0.22806\n",
      "[451]\tvalidation_0-logloss:0.22804\n",
      "[452]\tvalidation_0-logloss:0.22802\n",
      "[453]\tvalidation_0-logloss:0.22800\n",
      "[454]\tvalidation_0-logloss:0.22798\n",
      "[455]\tvalidation_0-logloss:0.22796\n",
      "[456]\tvalidation_0-logloss:0.22793\n",
      "[457]\tvalidation_0-logloss:0.22792\n",
      "[458]\tvalidation_0-logloss:0.22790\n",
      "[459]\tvalidation_0-logloss:0.22788\n",
      "[460]\tvalidation_0-logloss:0.22786\n",
      "[461]\tvalidation_0-logloss:0.22783\n",
      "[462]\tvalidation_0-logloss:0.22780\n",
      "[463]\tvalidation_0-logloss:0.22778\n",
      "[464]\tvalidation_0-logloss:0.22776\n",
      "[465]\tvalidation_0-logloss:0.22774\n",
      "[466]\tvalidation_0-logloss:0.22772\n",
      "[467]\tvalidation_0-logloss:0.22770\n",
      "[468]\tvalidation_0-logloss:0.22767\n",
      "[469]\tvalidation_0-logloss:0.22766\n",
      "[470]\tvalidation_0-logloss:0.22764\n",
      "[471]\tvalidation_0-logloss:0.22761\n",
      "[472]\tvalidation_0-logloss:0.22760\n",
      "[473]\tvalidation_0-logloss:0.22757\n",
      "[474]\tvalidation_0-logloss:0.22754\n",
      "[475]\tvalidation_0-logloss:0.22753\n",
      "[476]\tvalidation_0-logloss:0.22750\n",
      "[477]\tvalidation_0-logloss:0.22747\n",
      "[478]\tvalidation_0-logloss:0.22746\n",
      "[479]\tvalidation_0-logloss:0.22744\n",
      "[480]\tvalidation_0-logloss:0.22740\n",
      "[481]\tvalidation_0-logloss:0.22738\n",
      "[482]\tvalidation_0-logloss:0.22735\n",
      "[483]\tvalidation_0-logloss:0.22733\n",
      "[484]\tvalidation_0-logloss:0.22731\n",
      "[485]\tvalidation_0-logloss:0.22730\n",
      "[486]\tvalidation_0-logloss:0.22727\n",
      "[487]\tvalidation_0-logloss:0.22725\n",
      "[488]\tvalidation_0-logloss:0.22723\n",
      "[489]\tvalidation_0-logloss:0.22721\n",
      "[490]\tvalidation_0-logloss:0.22720\n",
      "[491]\tvalidation_0-logloss:0.22717\n",
      "[492]\tvalidation_0-logloss:0.22715\n",
      "[493]\tvalidation_0-logloss:0.22713\n",
      "[494]\tvalidation_0-logloss:0.22711\n",
      "[495]\tvalidation_0-logloss:0.22709\n",
      "[496]\tvalidation_0-logloss:0.22708\n",
      "[497]\tvalidation_0-logloss:0.22705\n",
      "[498]\tvalidation_0-logloss:0.22703\n",
      "[499]\tvalidation_0-logloss:0.22701\n",
      "[500]\tvalidation_0-logloss:0.22699\n",
      "[501]\tvalidation_0-logloss:0.22698\n",
      "[502]\tvalidation_0-logloss:0.22695\n",
      "[503]\tvalidation_0-logloss:0.22693\n",
      "[504]\tvalidation_0-logloss:0.22691\n",
      "[505]\tvalidation_0-logloss:0.22689\n",
      "[506]\tvalidation_0-logloss:0.22687\n",
      "[507]\tvalidation_0-logloss:0.22686\n",
      "[508]\tvalidation_0-logloss:0.22684\n",
      "[509]\tvalidation_0-logloss:0.22682\n",
      "[510]\tvalidation_0-logloss:0.22681\n",
      "[511]\tvalidation_0-logloss:0.22678\n",
      "[512]\tvalidation_0-logloss:0.22676\n",
      "[513]\tvalidation_0-logloss:0.22674\n",
      "[514]\tvalidation_0-logloss:0.22672\n",
      "[515]\tvalidation_0-logloss:0.22670\n",
      "[516]\tvalidation_0-logloss:0.22669\n",
      "[517]\tvalidation_0-logloss:0.22667\n",
      "[518]\tvalidation_0-logloss:0.22665\n",
      "[519]\tvalidation_0-logloss:0.22662\n",
      "[520]\tvalidation_0-logloss:0.22661\n",
      "[521]\tvalidation_0-logloss:0.22659\n",
      "[522]\tvalidation_0-logloss:0.22658\n",
      "[523]\tvalidation_0-logloss:0.22657\n",
      "[524]\tvalidation_0-logloss:0.22655\n",
      "[525]\tvalidation_0-logloss:0.22654\n",
      "[526]\tvalidation_0-logloss:0.22651\n",
      "[527]\tvalidation_0-logloss:0.22650\n",
      "[528]\tvalidation_0-logloss:0.22648\n",
      "[529]\tvalidation_0-logloss:0.22647\n",
      "[530]\tvalidation_0-logloss:0.22645\n",
      "[531]\tvalidation_0-logloss:0.22644\n",
      "[532]\tvalidation_0-logloss:0.22642\n",
      "[533]\tvalidation_0-logloss:0.22641\n",
      "[534]\tvalidation_0-logloss:0.22639\n",
      "[535]\tvalidation_0-logloss:0.22638\n",
      "[536]\tvalidation_0-logloss:0.22635\n",
      "[537]\tvalidation_0-logloss:0.22633\n",
      "[538]\tvalidation_0-logloss:0.22631\n",
      "[539]\tvalidation_0-logloss:0.22629\n",
      "[540]\tvalidation_0-logloss:0.22628\n",
      "[541]\tvalidation_0-logloss:0.22625\n",
      "[542]\tvalidation_0-logloss:0.22624\n",
      "[543]\tvalidation_0-logloss:0.22621\n",
      "[544]\tvalidation_0-logloss:0.22619\n",
      "[545]\tvalidation_0-logloss:0.22618\n",
      "[546]\tvalidation_0-logloss:0.22616\n",
      "[547]\tvalidation_0-logloss:0.22614\n",
      "[548]\tvalidation_0-logloss:0.22611\n",
      "[549]\tvalidation_0-logloss:0.22610\n",
      "[550]\tvalidation_0-logloss:0.22609\n",
      "[551]\tvalidation_0-logloss:0.22607\n",
      "[552]\tvalidation_0-logloss:0.22606\n",
      "[553]\tvalidation_0-logloss:0.22604\n",
      "[554]\tvalidation_0-logloss:0.22602\n",
      "[555]\tvalidation_0-logloss:0.22600\n",
      "[556]\tvalidation_0-logloss:0.22598\n",
      "[557]\tvalidation_0-logloss:0.22597\n",
      "[558]\tvalidation_0-logloss:0.22595\n",
      "[559]\tvalidation_0-logloss:0.22594\n",
      "[560]\tvalidation_0-logloss:0.22591\n",
      "[561]\tvalidation_0-logloss:0.22590\n",
      "[562]\tvalidation_0-logloss:0.22587\n",
      "[563]\tvalidation_0-logloss:0.22586\n",
      "[564]\tvalidation_0-logloss:0.22585\n",
      "[565]\tvalidation_0-logloss:0.22583\n",
      "[566]\tvalidation_0-logloss:0.22580\n",
      "[567]\tvalidation_0-logloss:0.22579\n",
      "[568]\tvalidation_0-logloss:0.22577\n",
      "[569]\tvalidation_0-logloss:0.22576\n",
      "[570]\tvalidation_0-logloss:0.22573\n",
      "[571]\tvalidation_0-logloss:0.22571\n",
      "[572]\tvalidation_0-logloss:0.22570\n",
      "[573]\tvalidation_0-logloss:0.22569\n",
      "[574]\tvalidation_0-logloss:0.22566\n",
      "[575]\tvalidation_0-logloss:0.22565\n",
      "[576]\tvalidation_0-logloss:0.22564\n",
      "[577]\tvalidation_0-logloss:0.22563\n",
      "[578]\tvalidation_0-logloss:0.22560\n",
      "[579]\tvalidation_0-logloss:0.22559\n",
      "[580]\tvalidation_0-logloss:0.22557\n",
      "[581]\tvalidation_0-logloss:0.22556\n",
      "[582]\tvalidation_0-logloss:0.22554\n",
      "[583]\tvalidation_0-logloss:0.22552\n",
      "[584]\tvalidation_0-logloss:0.22551\n",
      "[585]\tvalidation_0-logloss:0.22549\n",
      "[586]\tvalidation_0-logloss:0.22548\n",
      "[587]\tvalidation_0-logloss:0.22546\n",
      "[588]\tvalidation_0-logloss:0.22544\n",
      "[589]\tvalidation_0-logloss:0.22542\n",
      "[590]\tvalidation_0-logloss:0.22541\n",
      "[591]\tvalidation_0-logloss:0.22538\n",
      "[592]\tvalidation_0-logloss:0.22537\n",
      "[593]\tvalidation_0-logloss:0.22535\n",
      "[594]\tvalidation_0-logloss:0.22533\n",
      "[595]\tvalidation_0-logloss:0.22531\n",
      "[596]\tvalidation_0-logloss:0.22529\n",
      "[597]\tvalidation_0-logloss:0.22527\n",
      "[598]\tvalidation_0-logloss:0.22526\n",
      "[599]\tvalidation_0-logloss:0.22525\n",
      "[600]\tvalidation_0-logloss:0.22524\n",
      "[601]\tvalidation_0-logloss:0.22522\n",
      "[602]\tvalidation_0-logloss:0.22521\n",
      "[603]\tvalidation_0-logloss:0.22520\n",
      "[604]\tvalidation_0-logloss:0.22518\n",
      "[605]\tvalidation_0-logloss:0.22516\n",
      "[606]\tvalidation_0-logloss:0.22514\n",
      "[607]\tvalidation_0-logloss:0.22512\n",
      "[608]\tvalidation_0-logloss:0.22511\n",
      "[609]\tvalidation_0-logloss:0.22510\n",
      "[610]\tvalidation_0-logloss:0.22508\n",
      "[611]\tvalidation_0-logloss:0.22507\n",
      "[612]\tvalidation_0-logloss:0.22505\n",
      "[613]\tvalidation_0-logloss:0.22503\n",
      "[614]\tvalidation_0-logloss:0.22501\n",
      "[615]\tvalidation_0-logloss:0.22499\n",
      "[616]\tvalidation_0-logloss:0.22498\n",
      "[617]\tvalidation_0-logloss:0.22497\n",
      "[618]\tvalidation_0-logloss:0.22496\n",
      "[619]\tvalidation_0-logloss:0.22494\n",
      "[620]\tvalidation_0-logloss:0.22493\n",
      "[621]\tvalidation_0-logloss:0.22492\n",
      "[622]\tvalidation_0-logloss:0.22490\n",
      "[623]\tvalidation_0-logloss:0.22489\n",
      "[624]\tvalidation_0-logloss:0.22488\n",
      "[625]\tvalidation_0-logloss:0.22487\n",
      "[626]\tvalidation_0-logloss:0.22485\n",
      "[627]\tvalidation_0-logloss:0.22483\n",
      "[628]\tvalidation_0-logloss:0.22481\n",
      "[629]\tvalidation_0-logloss:0.22480\n",
      "[630]\tvalidation_0-logloss:0.22479\n",
      "[631]\tvalidation_0-logloss:0.22477\n",
      "[632]\tvalidation_0-logloss:0.22476\n",
      "[633]\tvalidation_0-logloss:0.22474\n",
      "[634]\tvalidation_0-logloss:0.22474\n",
      "[635]\tvalidation_0-logloss:0.22472\n",
      "[636]\tvalidation_0-logloss:0.22470\n",
      "[637]\tvalidation_0-logloss:0.22468\n",
      "[638]\tvalidation_0-logloss:0.22467\n",
      "[639]\tvalidation_0-logloss:0.22466\n",
      "[640]\tvalidation_0-logloss:0.22464\n",
      "[641]\tvalidation_0-logloss:0.22462\n",
      "[642]\tvalidation_0-logloss:0.22461\n",
      "[643]\tvalidation_0-logloss:0.22459\n",
      "[644]\tvalidation_0-logloss:0.22457\n",
      "[645]\tvalidation_0-logloss:0.22456\n",
      "[646]\tvalidation_0-logloss:0.22454\n",
      "[647]\tvalidation_0-logloss:0.22453\n",
      "[648]\tvalidation_0-logloss:0.22452\n",
      "[649]\tvalidation_0-logloss:0.22450\n",
      "[650]\tvalidation_0-logloss:0.22449\n",
      "[651]\tvalidation_0-logloss:0.22448\n",
      "[652]\tvalidation_0-logloss:0.22447\n",
      "[653]\tvalidation_0-logloss:0.22446\n",
      "[654]\tvalidation_0-logloss:0.22444\n",
      "[655]\tvalidation_0-logloss:0.22442\n",
      "[656]\tvalidation_0-logloss:0.22440\n",
      "[657]\tvalidation_0-logloss:0.22439\n",
      "[658]\tvalidation_0-logloss:0.22437\n",
      "[659]\tvalidation_0-logloss:0.22436\n",
      "[660]\tvalidation_0-logloss:0.22435\n",
      "[661]\tvalidation_0-logloss:0.22434\n",
      "[662]\tvalidation_0-logloss:0.22432\n",
      "[663]\tvalidation_0-logloss:0.22432\n",
      "[664]\tvalidation_0-logloss:0.22431\n",
      "[665]\tvalidation_0-logloss:0.22429\n",
      "[666]\tvalidation_0-logloss:0.22428\n",
      "[667]\tvalidation_0-logloss:0.22427\n",
      "[668]\tvalidation_0-logloss:0.22426\n",
      "[669]\tvalidation_0-logloss:0.22424\n",
      "[670]\tvalidation_0-logloss:0.22423\n",
      "[671]\tvalidation_0-logloss:0.22422\n",
      "[672]\tvalidation_0-logloss:0.22421\n",
      "[673]\tvalidation_0-logloss:0.22421\n",
      "[674]\tvalidation_0-logloss:0.22419\n",
      "[675]\tvalidation_0-logloss:0.22418\n",
      "[676]\tvalidation_0-logloss:0.22416\n",
      "[677]\tvalidation_0-logloss:0.22415\n",
      "[678]\tvalidation_0-logloss:0.22414\n",
      "[679]\tvalidation_0-logloss:0.22413\n",
      "[680]\tvalidation_0-logloss:0.22411\n",
      "[681]\tvalidation_0-logloss:0.22410\n",
      "[682]\tvalidation_0-logloss:0.22409\n",
      "[683]\tvalidation_0-logloss:0.22408\n",
      "[684]\tvalidation_0-logloss:0.22407\n",
      "[685]\tvalidation_0-logloss:0.22406\n",
      "[686]\tvalidation_0-logloss:0.22405\n",
      "[687]\tvalidation_0-logloss:0.22403\n",
      "[688]\tvalidation_0-logloss:0.22402\n",
      "[689]\tvalidation_0-logloss:0.22401\n",
      "[690]\tvalidation_0-logloss:0.22401\n",
      "[691]\tvalidation_0-logloss:0.22400\n",
      "[692]\tvalidation_0-logloss:0.22398\n",
      "[693]\tvalidation_0-logloss:0.22397\n",
      "[694]\tvalidation_0-logloss:0.22397\n",
      "[695]\tvalidation_0-logloss:0.22395\n",
      "[696]\tvalidation_0-logloss:0.22394\n",
      "[697]\tvalidation_0-logloss:0.22392\n",
      "[698]\tvalidation_0-logloss:0.22392\n",
      "[699]\tvalidation_0-logloss:0.22390\n",
      "[700]\tvalidation_0-logloss:0.22390\n",
      "[701]\tvalidation_0-logloss:0.22389\n",
      "[702]\tvalidation_0-logloss:0.22388\n",
      "[703]\tvalidation_0-logloss:0.22387\n",
      "[704]\tvalidation_0-logloss:0.22387\n",
      "[705]\tvalidation_0-logloss:0.22386\n",
      "[706]\tvalidation_0-logloss:0.22384\n",
      "[707]\tvalidation_0-logloss:0.22383\n",
      "[708]\tvalidation_0-logloss:0.22382\n",
      "[709]\tvalidation_0-logloss:0.22381\n",
      "[710]\tvalidation_0-logloss:0.22380\n",
      "[711]\tvalidation_0-logloss:0.22379\n",
      "[712]\tvalidation_0-logloss:0.22377\n",
      "[713]\tvalidation_0-logloss:0.22377\n",
      "[714]\tvalidation_0-logloss:0.22376\n",
      "[715]\tvalidation_0-logloss:0.22375\n",
      "[716]\tvalidation_0-logloss:0.22374\n",
      "[717]\tvalidation_0-logloss:0.22373\n",
      "[718]\tvalidation_0-logloss:0.22372\n",
      "[719]\tvalidation_0-logloss:0.22371\n",
      "[720]\tvalidation_0-logloss:0.22370\n",
      "[721]\tvalidation_0-logloss:0.22369\n",
      "[722]\tvalidation_0-logloss:0.22369\n",
      "[723]\tvalidation_0-logloss:0.22368\n",
      "[724]\tvalidation_0-logloss:0.22367\n",
      "[725]\tvalidation_0-logloss:0.22367\n",
      "[726]\tvalidation_0-logloss:0.22366\n",
      "[727]\tvalidation_0-logloss:0.22365\n",
      "[728]\tvalidation_0-logloss:0.22364\n",
      "[729]\tvalidation_0-logloss:0.22363\n",
      "[730]\tvalidation_0-logloss:0.22362\n",
      "[731]\tvalidation_0-logloss:0.22360\n",
      "[732]\tvalidation_0-logloss:0.22359\n",
      "[733]\tvalidation_0-logloss:0.22358\n",
      "[734]\tvalidation_0-logloss:0.22356\n",
      "[735]\tvalidation_0-logloss:0.22354\n",
      "[736]\tvalidation_0-logloss:0.22354\n",
      "[737]\tvalidation_0-logloss:0.22353\n",
      "[738]\tvalidation_0-logloss:0.22352\n",
      "[739]\tvalidation_0-logloss:0.22352\n",
      "[740]\tvalidation_0-logloss:0.22350\n",
      "[741]\tvalidation_0-logloss:0.22350\n",
      "[742]\tvalidation_0-logloss:0.22349\n",
      "[743]\tvalidation_0-logloss:0.22348\n",
      "[744]\tvalidation_0-logloss:0.22346\n",
      "[745]\tvalidation_0-logloss:0.22345\n",
      "[746]\tvalidation_0-logloss:0.22344\n",
      "[747]\tvalidation_0-logloss:0.22343\n",
      "[748]\tvalidation_0-logloss:0.22343\n",
      "[749]\tvalidation_0-logloss:0.22342\n",
      "[750]\tvalidation_0-logloss:0.22342\n",
      "[751]\tvalidation_0-logloss:0.22341\n",
      "[752]\tvalidation_0-logloss:0.22340\n",
      "[753]\tvalidation_0-logloss:0.22339\n",
      "[754]\tvalidation_0-logloss:0.22338\n",
      "[755]\tvalidation_0-logloss:0.22337\n",
      "[756]\tvalidation_0-logloss:0.22337\n",
      "[757]\tvalidation_0-logloss:0.22336\n",
      "[758]\tvalidation_0-logloss:0.22336\n",
      "[759]\tvalidation_0-logloss:0.22334\n",
      "[760]\tvalidation_0-logloss:0.22334\n",
      "[761]\tvalidation_0-logloss:0.22333\n",
      "[762]\tvalidation_0-logloss:0.22332\n",
      "[763]\tvalidation_0-logloss:0.22331\n",
      "[764]\tvalidation_0-logloss:0.22330\n",
      "[765]\tvalidation_0-logloss:0.22329\n",
      "[766]\tvalidation_0-logloss:0.22329\n",
      "[767]\tvalidation_0-logloss:0.22327\n",
      "[768]\tvalidation_0-logloss:0.22326\n",
      "[769]\tvalidation_0-logloss:0.22325\n",
      "[770]\tvalidation_0-logloss:0.22324\n",
      "[771]\tvalidation_0-logloss:0.22324\n",
      "[772]\tvalidation_0-logloss:0.22323\n",
      "[773]\tvalidation_0-logloss:0.22322\n",
      "[774]\tvalidation_0-logloss:0.22321\n",
      "[775]\tvalidation_0-logloss:0.22320\n",
      "[776]\tvalidation_0-logloss:0.22320\n",
      "[777]\tvalidation_0-logloss:0.22319\n",
      "[778]\tvalidation_0-logloss:0.22318\n",
      "[779]\tvalidation_0-logloss:0.22318\n",
      "[780]\tvalidation_0-logloss:0.22317\n",
      "[781]\tvalidation_0-logloss:0.22317\n",
      "[782]\tvalidation_0-logloss:0.22316\n",
      "[783]\tvalidation_0-logloss:0.22314\n",
      "[784]\tvalidation_0-logloss:0.22313\n",
      "[785]\tvalidation_0-logloss:0.22312\n",
      "[786]\tvalidation_0-logloss:0.22311\n",
      "[787]\tvalidation_0-logloss:0.22311\n",
      "[788]\tvalidation_0-logloss:0.22310\n",
      "[789]\tvalidation_0-logloss:0.22310\n",
      "[790]\tvalidation_0-logloss:0.22309\n",
      "[791]\tvalidation_0-logloss:0.22308\n",
      "[792]\tvalidation_0-logloss:0.22307\n",
      "[793]\tvalidation_0-logloss:0.22306\n",
      "[794]\tvalidation_0-logloss:0.22305\n",
      "[795]\tvalidation_0-logloss:0.22305\n",
      "[796]\tvalidation_0-logloss:0.22304\n",
      "[797]\tvalidation_0-logloss:0.22304\n",
      "[798]\tvalidation_0-logloss:0.22303\n",
      "[799]\tvalidation_0-logloss:0.22303\n",
      "[800]\tvalidation_0-logloss:0.22302\n",
      "[801]\tvalidation_0-logloss:0.22301\n",
      "[802]\tvalidation_0-logloss:0.22300\n",
      "[803]\tvalidation_0-logloss:0.22299\n",
      "[804]\tvalidation_0-logloss:0.22298\n",
      "[805]\tvalidation_0-logloss:0.22297\n",
      "[806]\tvalidation_0-logloss:0.22296\n",
      "[807]\tvalidation_0-logloss:0.22295\n",
      "[808]\tvalidation_0-logloss:0.22294\n",
      "[809]\tvalidation_0-logloss:0.22293\n",
      "[810]\tvalidation_0-logloss:0.22292\n",
      "[811]\tvalidation_0-logloss:0.22292\n",
      "[812]\tvalidation_0-logloss:0.22291\n",
      "[813]\tvalidation_0-logloss:0.22290\n",
      "[814]\tvalidation_0-logloss:0.22290\n",
      "[815]\tvalidation_0-logloss:0.22289\n",
      "[816]\tvalidation_0-logloss:0.22287\n",
      "[817]\tvalidation_0-logloss:0.22287\n",
      "[818]\tvalidation_0-logloss:0.22287\n",
      "[819]\tvalidation_0-logloss:0.22285\n",
      "[820]\tvalidation_0-logloss:0.22285\n",
      "[821]\tvalidation_0-logloss:0.22284\n",
      "[822]\tvalidation_0-logloss:0.22282\n",
      "[823]\tvalidation_0-logloss:0.22281\n",
      "[824]\tvalidation_0-logloss:0.22281\n",
      "[825]\tvalidation_0-logloss:0.22280\n",
      "[826]\tvalidation_0-logloss:0.22279\n",
      "[827]\tvalidation_0-logloss:0.22277\n",
      "[828]\tvalidation_0-logloss:0.22276\n",
      "[829]\tvalidation_0-logloss:0.22276\n",
      "[830]\tvalidation_0-logloss:0.22275\n",
      "[831]\tvalidation_0-logloss:0.22273\n",
      "[832]\tvalidation_0-logloss:0.22273\n",
      "[833]\tvalidation_0-logloss:0.22272\n",
      "[834]\tvalidation_0-logloss:0.22272\n",
      "[835]\tvalidation_0-logloss:0.22271\n",
      "[836]\tvalidation_0-logloss:0.22270\n",
      "[837]\tvalidation_0-logloss:0.22269\n",
      "[838]\tvalidation_0-logloss:0.22268\n",
      "[839]\tvalidation_0-logloss:0.22267\n",
      "[840]\tvalidation_0-logloss:0.22267\n",
      "[841]\tvalidation_0-logloss:0.22266\n",
      "[842]\tvalidation_0-logloss:0.22265\n",
      "[843]\tvalidation_0-logloss:0.22264\n",
      "[844]\tvalidation_0-logloss:0.22263\n",
      "[845]\tvalidation_0-logloss:0.22263\n",
      "[846]\tvalidation_0-logloss:0.22262\n",
      "[847]\tvalidation_0-logloss:0.22262\n",
      "[848]\tvalidation_0-logloss:0.22261\n",
      "[849]\tvalidation_0-logloss:0.22260\n",
      "[850]\tvalidation_0-logloss:0.22259\n",
      "[851]\tvalidation_0-logloss:0.22257\n",
      "[852]\tvalidation_0-logloss:0.22256\n",
      "[853]\tvalidation_0-logloss:0.22256\n",
      "[854]\tvalidation_0-logloss:0.22255\n",
      "[855]\tvalidation_0-logloss:0.22255\n",
      "[856]\tvalidation_0-logloss:0.22254\n",
      "[857]\tvalidation_0-logloss:0.22253\n",
      "[858]\tvalidation_0-logloss:0.22253\n",
      "[859]\tvalidation_0-logloss:0.22251\n",
      "[860]\tvalidation_0-logloss:0.22251\n",
      "[861]\tvalidation_0-logloss:0.22250\n",
      "[862]\tvalidation_0-logloss:0.22249\n",
      "[863]\tvalidation_0-logloss:0.22248\n",
      "[864]\tvalidation_0-logloss:0.22248\n",
      "[865]\tvalidation_0-logloss:0.22247\n",
      "[866]\tvalidation_0-logloss:0.22246\n",
      "[867]\tvalidation_0-logloss:0.22246\n",
      "[868]\tvalidation_0-logloss:0.22245\n",
      "[869]\tvalidation_0-logloss:0.22244\n",
      "[870]\tvalidation_0-logloss:0.22243\n",
      "[871]\tvalidation_0-logloss:0.22242\n",
      "[872]\tvalidation_0-logloss:0.22241\n",
      "[873]\tvalidation_0-logloss:0.22240\n",
      "[874]\tvalidation_0-logloss:0.22239\n",
      "[875]\tvalidation_0-logloss:0.22238\n",
      "[876]\tvalidation_0-logloss:0.22237\n",
      "[877]\tvalidation_0-logloss:0.22236\n",
      "[878]\tvalidation_0-logloss:0.22235\n",
      "[879]\tvalidation_0-logloss:0.22235\n",
      "[880]\tvalidation_0-logloss:0.22234\n",
      "[881]\tvalidation_0-logloss:0.22233\n",
      "[882]\tvalidation_0-logloss:0.22232\n",
      "[883]\tvalidation_0-logloss:0.22232\n",
      "[884]\tvalidation_0-logloss:0.22231\n",
      "[885]\tvalidation_0-logloss:0.22230\n",
      "[886]\tvalidation_0-logloss:0.22229\n",
      "[887]\tvalidation_0-logloss:0.22228\n",
      "[888]\tvalidation_0-logloss:0.22228\n",
      "[889]\tvalidation_0-logloss:0.22227\n",
      "[890]\tvalidation_0-logloss:0.22226\n",
      "[891]\tvalidation_0-logloss:0.22225\n",
      "[892]\tvalidation_0-logloss:0.22224\n",
      "[893]\tvalidation_0-logloss:0.22223\n",
      "[894]\tvalidation_0-logloss:0.22222\n",
      "[895]\tvalidation_0-logloss:0.22222\n",
      "[896]\tvalidation_0-logloss:0.22221\n",
      "[897]\tvalidation_0-logloss:0.22220\n",
      "[898]\tvalidation_0-logloss:0.22219\n",
      "[899]\tvalidation_0-logloss:0.22217\n",
      "[900]\tvalidation_0-logloss:0.22216\n",
      "[901]\tvalidation_0-logloss:0.22216\n",
      "[902]\tvalidation_0-logloss:0.22215\n",
      "[903]\tvalidation_0-logloss:0.22214\n",
      "[904]\tvalidation_0-logloss:0.22213\n",
      "[905]\tvalidation_0-logloss:0.22213\n",
      "[906]\tvalidation_0-logloss:0.22212\n",
      "[907]\tvalidation_0-logloss:0.22211\n",
      "[908]\tvalidation_0-logloss:0.22210\n",
      "[909]\tvalidation_0-logloss:0.22209\n",
      "[910]\tvalidation_0-logloss:0.22209\n",
      "[911]\tvalidation_0-logloss:0.22208\n",
      "[912]\tvalidation_0-logloss:0.22207\n",
      "[913]\tvalidation_0-logloss:0.22206\n",
      "[914]\tvalidation_0-logloss:0.22205\n",
      "[915]\tvalidation_0-logloss:0.22204\n",
      "[916]\tvalidation_0-logloss:0.22204\n",
      "[917]\tvalidation_0-logloss:0.22203\n",
      "[918]\tvalidation_0-logloss:0.22202\n",
      "[919]\tvalidation_0-logloss:0.22201\n",
      "[920]\tvalidation_0-logloss:0.22200\n",
      "[921]\tvalidation_0-logloss:0.22200\n",
      "[922]\tvalidation_0-logloss:0.22199\n",
      "[923]\tvalidation_0-logloss:0.22198\n",
      "[924]\tvalidation_0-logloss:0.22197\n",
      "[925]\tvalidation_0-logloss:0.22197\n",
      "[926]\tvalidation_0-logloss:0.22196\n",
      "[927]\tvalidation_0-logloss:0.22196\n",
      "[928]\tvalidation_0-logloss:0.22195\n",
      "[929]\tvalidation_0-logloss:0.22194\n",
      "[930]\tvalidation_0-logloss:0.22194\n",
      "[931]\tvalidation_0-logloss:0.22193\n",
      "[932]\tvalidation_0-logloss:0.22192\n",
      "[933]\tvalidation_0-logloss:0.22192\n",
      "[934]\tvalidation_0-logloss:0.22190\n",
      "[935]\tvalidation_0-logloss:0.22190\n",
      "[936]\tvalidation_0-logloss:0.22189\n",
      "[937]\tvalidation_0-logloss:0.22188\n",
      "[938]\tvalidation_0-logloss:0.22188\n",
      "[939]\tvalidation_0-logloss:0.22187\n",
      "[940]\tvalidation_0-logloss:0.22186\n",
      "[941]\tvalidation_0-logloss:0.22185\n",
      "[942]\tvalidation_0-logloss:0.22185\n",
      "[943]\tvalidation_0-logloss:0.22184\n",
      "[944]\tvalidation_0-logloss:0.22183\n",
      "[945]\tvalidation_0-logloss:0.22182\n",
      "[946]\tvalidation_0-logloss:0.22182\n",
      "[947]\tvalidation_0-logloss:0.22181\n",
      "[948]\tvalidation_0-logloss:0.22179\n",
      "[949]\tvalidation_0-logloss:0.22178\n",
      "[950]\tvalidation_0-logloss:0.22178\n",
      "[951]\tvalidation_0-logloss:0.22177\n",
      "[952]\tvalidation_0-logloss:0.22176\n",
      "[953]\tvalidation_0-logloss:0.22175\n",
      "[954]\tvalidation_0-logloss:0.22175\n",
      "[955]\tvalidation_0-logloss:0.22173\n",
      "[956]\tvalidation_0-logloss:0.22173\n",
      "[957]\tvalidation_0-logloss:0.22172\n",
      "[958]\tvalidation_0-logloss:0.22171\n",
      "[959]\tvalidation_0-logloss:0.22170\n",
      "[960]\tvalidation_0-logloss:0.22169\n",
      "[961]\tvalidation_0-logloss:0.22169\n",
      "[962]\tvalidation_0-logloss:0.22168\n",
      "[963]\tvalidation_0-logloss:0.22167\n",
      "[964]\tvalidation_0-logloss:0.22166\n",
      "[965]\tvalidation_0-logloss:0.22165\n",
      "[966]\tvalidation_0-logloss:0.22164\n",
      "[967]\tvalidation_0-logloss:0.22164\n",
      "[968]\tvalidation_0-logloss:0.22163\n",
      "[969]\tvalidation_0-logloss:0.22162\n",
      "[970]\tvalidation_0-logloss:0.22161\n",
      "[971]\tvalidation_0-logloss:0.22161\n",
      "[972]\tvalidation_0-logloss:0.22159\n",
      "[973]\tvalidation_0-logloss:0.22158\n",
      "[974]\tvalidation_0-logloss:0.22158\n",
      "[975]\tvalidation_0-logloss:0.22157\n",
      "[976]\tvalidation_0-logloss:0.22157\n",
      "[977]\tvalidation_0-logloss:0.22156\n",
      "[978]\tvalidation_0-logloss:0.22155\n",
      "[979]\tvalidation_0-logloss:0.22155\n",
      "[980]\tvalidation_0-logloss:0.22154\n",
      "[981]\tvalidation_0-logloss:0.22153\n",
      "[982]\tvalidation_0-logloss:0.22152\n",
      "[983]\tvalidation_0-logloss:0.22151\n",
      "[984]\tvalidation_0-logloss:0.22150\n",
      "[985]\tvalidation_0-logloss:0.22150\n",
      "[986]\tvalidation_0-logloss:0.22148\n",
      "[987]\tvalidation_0-logloss:0.22148\n",
      "[988]\tvalidation_0-logloss:0.22147\n",
      "[989]\tvalidation_0-logloss:0.22146\n",
      "[990]\tvalidation_0-logloss:0.22145\n",
      "[991]\tvalidation_0-logloss:0.22144\n",
      "[992]\tvalidation_0-logloss:0.22144\n",
      "[993]\tvalidation_0-logloss:0.22143\n",
      "[994]\tvalidation_0-logloss:0.22143\n",
      "[995]\tvalidation_0-logloss:0.22142\n",
      "[996]\tvalidation_0-logloss:0.22141\n",
      "[997]\tvalidation_0-logloss:0.22140\n",
      "[998]\tvalidation_0-logloss:0.22139\n",
      "[999]\tvalidation_0-logloss:0.22139\n",
      "[1000]\tvalidation_0-logloss:0.22138\n",
      "[1001]\tvalidation_0-logloss:0.22138\n",
      "[1002]\tvalidation_0-logloss:0.22137\n",
      "[1003]\tvalidation_0-logloss:0.22136\n",
      "[1004]\tvalidation_0-logloss:0.22135\n",
      "[1005]\tvalidation_0-logloss:0.22134\n",
      "[1006]\tvalidation_0-logloss:0.22133\n",
      "[1007]\tvalidation_0-logloss:0.22132\n",
      "[1008]\tvalidation_0-logloss:0.22130\n",
      "[1009]\tvalidation_0-logloss:0.22130\n",
      "[1010]\tvalidation_0-logloss:0.22130\n",
      "[1011]\tvalidation_0-logloss:0.22129\n",
      "[1012]\tvalidation_0-logloss:0.22128\n",
      "[1013]\tvalidation_0-logloss:0.22127\n",
      "[1014]\tvalidation_0-logloss:0.22126\n",
      "[1015]\tvalidation_0-logloss:0.22125\n",
      "[1016]\tvalidation_0-logloss:0.22125\n",
      "[1017]\tvalidation_0-logloss:0.22124\n",
      "[1018]\tvalidation_0-logloss:0.22123\n",
      "[1019]\tvalidation_0-logloss:0.22122\n",
      "[1020]\tvalidation_0-logloss:0.22122\n",
      "[1021]\tvalidation_0-logloss:0.22122\n",
      "[1022]\tvalidation_0-logloss:0.22120\n",
      "[1023]\tvalidation_0-logloss:0.22120\n",
      "[1024]\tvalidation_0-logloss:0.22119\n",
      "[1025]\tvalidation_0-logloss:0.22119\n",
      "[1026]\tvalidation_0-logloss:0.22117\n",
      "[1027]\tvalidation_0-logloss:0.22116\n",
      "[1028]\tvalidation_0-logloss:0.22116\n",
      "[1029]\tvalidation_0-logloss:0.22115\n",
      "[1030]\tvalidation_0-logloss:0.22115\n",
      "[1031]\tvalidation_0-logloss:0.22114\n",
      "[1032]\tvalidation_0-logloss:0.22113\n",
      "[1033]\tvalidation_0-logloss:0.22112\n",
      "[1034]\tvalidation_0-logloss:0.22111\n",
      "[1035]\tvalidation_0-logloss:0.22110\n",
      "[1036]\tvalidation_0-logloss:0.22109\n",
      "[1037]\tvalidation_0-logloss:0.22109\n",
      "[1038]\tvalidation_0-logloss:0.22108\n",
      "[1039]\tvalidation_0-logloss:0.22107\n",
      "[1040]\tvalidation_0-logloss:0.22106\n",
      "[1041]\tvalidation_0-logloss:0.22105\n",
      "[1042]\tvalidation_0-logloss:0.22104\n",
      "[1043]\tvalidation_0-logloss:0.22103\n",
      "[1044]\tvalidation_0-logloss:0.22103\n",
      "[1045]\tvalidation_0-logloss:0.22102\n",
      "[1046]\tvalidation_0-logloss:0.22101\n",
      "[1047]\tvalidation_0-logloss:0.22100\n",
      "[1048]\tvalidation_0-logloss:0.22100\n",
      "[1049]\tvalidation_0-logloss:0.22099\n",
      "[1050]\tvalidation_0-logloss:0.22098\n",
      "[1051]\tvalidation_0-logloss:0.22097\n",
      "[1052]\tvalidation_0-logloss:0.22096\n",
      "[1053]\tvalidation_0-logloss:0.22096\n",
      "[1054]\tvalidation_0-logloss:0.22095\n",
      "[1055]\tvalidation_0-logloss:0.22094\n",
      "[1056]\tvalidation_0-logloss:0.22094\n",
      "[1057]\tvalidation_0-logloss:0.22093\n",
      "[1058]\tvalidation_0-logloss:0.22092\n",
      "[1059]\tvalidation_0-logloss:0.22092\n",
      "[1060]\tvalidation_0-logloss:0.22090\n",
      "[1061]\tvalidation_0-logloss:0.22089\n",
      "[1062]\tvalidation_0-logloss:0.22089\n",
      "[1063]\tvalidation_0-logloss:0.22088\n",
      "[1064]\tvalidation_0-logloss:0.22087\n",
      "[1065]\tvalidation_0-logloss:0.22086\n",
      "[1066]\tvalidation_0-logloss:0.22086\n",
      "[1067]\tvalidation_0-logloss:0.22085\n",
      "[1068]\tvalidation_0-logloss:0.22084\n",
      "[1069]\tvalidation_0-logloss:0.22083\n",
      "[1070]\tvalidation_0-logloss:0.22083\n",
      "[1071]\tvalidation_0-logloss:0.22082\n",
      "[1072]\tvalidation_0-logloss:0.22082\n",
      "[1073]\tvalidation_0-logloss:0.22081\n",
      "[1074]\tvalidation_0-logloss:0.22080\n",
      "[1075]\tvalidation_0-logloss:0.22080\n",
      "[1076]\tvalidation_0-logloss:0.22079\n",
      "[1077]\tvalidation_0-logloss:0.22079\n",
      "[1078]\tvalidation_0-logloss:0.22078\n",
      "[1079]\tvalidation_0-logloss:0.22077\n",
      "[1080]\tvalidation_0-logloss:0.22077\n",
      "[1081]\tvalidation_0-logloss:0.22076\n",
      "[1082]\tvalidation_0-logloss:0.22075\n",
      "[1083]\tvalidation_0-logloss:0.22074\n",
      "[1084]\tvalidation_0-logloss:0.22073\n",
      "[1085]\tvalidation_0-logloss:0.22073\n",
      "[1086]\tvalidation_0-logloss:0.22072\n",
      "[1087]\tvalidation_0-logloss:0.22070\n",
      "[1088]\tvalidation_0-logloss:0.22069\n",
      "[1089]\tvalidation_0-logloss:0.22069\n",
      "[1090]\tvalidation_0-logloss:0.22068\n",
      "[1091]\tvalidation_0-logloss:0.22067\n",
      "[1092]\tvalidation_0-logloss:0.22066\n",
      "[1093]\tvalidation_0-logloss:0.22065\n",
      "[1094]\tvalidation_0-logloss:0.22065\n",
      "[1095]\tvalidation_0-logloss:0.22064\n",
      "[1096]\tvalidation_0-logloss:0.22063\n",
      "[1097]\tvalidation_0-logloss:0.22062\n",
      "[1098]\tvalidation_0-logloss:0.22062\n",
      "[1099]\tvalidation_0-logloss:0.22061\n",
      "[1100]\tvalidation_0-logloss:0.22059\n",
      "[1101]\tvalidation_0-logloss:0.22059\n",
      "[1102]\tvalidation_0-logloss:0.22058\n",
      "[1103]\tvalidation_0-logloss:0.22058\n",
      "[1104]\tvalidation_0-logloss:0.22057\n",
      "[1105]\tvalidation_0-logloss:0.22056\n",
      "[1106]\tvalidation_0-logloss:0.22056\n",
      "[1107]\tvalidation_0-logloss:0.22055\n",
      "[1108]\tvalidation_0-logloss:0.22054\n",
      "[1109]\tvalidation_0-logloss:0.22053\n",
      "[1110]\tvalidation_0-logloss:0.22052\n",
      "[1111]\tvalidation_0-logloss:0.22052\n",
      "[1112]\tvalidation_0-logloss:0.22050\n",
      "[1113]\tvalidation_0-logloss:0.22049\n",
      "[1114]\tvalidation_0-logloss:0.22048\n",
      "[1115]\tvalidation_0-logloss:0.22047\n",
      "[1116]\tvalidation_0-logloss:0.22046\n",
      "[1117]\tvalidation_0-logloss:0.22046\n",
      "[1118]\tvalidation_0-logloss:0.22045\n",
      "[1119]\tvalidation_0-logloss:0.22044\n",
      "[1120]\tvalidation_0-logloss:0.22043\n",
      "[1121]\tvalidation_0-logloss:0.22043\n",
      "[1122]\tvalidation_0-logloss:0.22042\n",
      "[1123]\tvalidation_0-logloss:0.22042\n",
      "[1124]\tvalidation_0-logloss:0.22041\n",
      "[1125]\tvalidation_0-logloss:0.22040\n",
      "[1126]\tvalidation_0-logloss:0.22039\n",
      "[1127]\tvalidation_0-logloss:0.22038\n",
      "[1128]\tvalidation_0-logloss:0.22038\n",
      "[1129]\tvalidation_0-logloss:0.22037\n",
      "[1130]\tvalidation_0-logloss:0.22036\n",
      "[1131]\tvalidation_0-logloss:0.22036\n",
      "[1132]\tvalidation_0-logloss:0.22035\n",
      "[1133]\tvalidation_0-logloss:0.22034\n",
      "[1134]\tvalidation_0-logloss:0.22034\n",
      "[1135]\tvalidation_0-logloss:0.22033\n",
      "[1136]\tvalidation_0-logloss:0.22033\n",
      "[1137]\tvalidation_0-logloss:0.22032\n",
      "[1138]\tvalidation_0-logloss:0.22031\n",
      "[1139]\tvalidation_0-logloss:0.22030\n",
      "[1140]\tvalidation_0-logloss:0.22030\n",
      "[1141]\tvalidation_0-logloss:0.22029\n",
      "[1142]\tvalidation_0-logloss:0.22029\n",
      "[1143]\tvalidation_0-logloss:0.22028\n",
      "[1144]\tvalidation_0-logloss:0.22027\n",
      "[1145]\tvalidation_0-logloss:0.22026\n",
      "[1146]\tvalidation_0-logloss:0.22026\n",
      "[1147]\tvalidation_0-logloss:0.22025\n",
      "[1148]\tvalidation_0-logloss:0.22024\n",
      "[1149]\tvalidation_0-logloss:0.22024\n",
      "[1150]\tvalidation_0-logloss:0.22023\n",
      "[1151]\tvalidation_0-logloss:0.22022\n",
      "[1152]\tvalidation_0-logloss:0.22021\n",
      "[1153]\tvalidation_0-logloss:0.22020\n",
      "[1154]\tvalidation_0-logloss:0.22019\n",
      "[1155]\tvalidation_0-logloss:0.22019\n",
      "[1156]\tvalidation_0-logloss:0.22018\n",
      "[1157]\tvalidation_0-logloss:0.22017\n",
      "[1158]\tvalidation_0-logloss:0.22016\n",
      "[1159]\tvalidation_0-logloss:0.22015\n",
      "[1160]\tvalidation_0-logloss:0.22014\n",
      "[1161]\tvalidation_0-logloss:0.22014\n",
      "[1162]\tvalidation_0-logloss:0.22012\n",
      "[1163]\tvalidation_0-logloss:0.22011\n",
      "[1164]\tvalidation_0-logloss:0.22011\n",
      "[1165]\tvalidation_0-logloss:0.22010\n",
      "[1166]\tvalidation_0-logloss:0.22010\n",
      "[1167]\tvalidation_0-logloss:0.22008\n",
      "[1168]\tvalidation_0-logloss:0.22008\n",
      "[1169]\tvalidation_0-logloss:0.22007\n",
      "[1170]\tvalidation_0-logloss:0.22006\n",
      "[1171]\tvalidation_0-logloss:0.22005\n",
      "[1172]\tvalidation_0-logloss:0.22004\n",
      "[1173]\tvalidation_0-logloss:0.22004\n",
      "[1174]\tvalidation_0-logloss:0.22003\n",
      "[1175]\tvalidation_0-logloss:0.22002\n",
      "[1176]\tvalidation_0-logloss:0.22001\n",
      "[1177]\tvalidation_0-logloss:0.22000\n",
      "[1178]\tvalidation_0-logloss:0.21999\n",
      "[1179]\tvalidation_0-logloss:0.21999\n",
      "[1180]\tvalidation_0-logloss:0.21998\n",
      "[1181]\tvalidation_0-logloss:0.21997\n",
      "[1182]\tvalidation_0-logloss:0.21996\n",
      "[1183]\tvalidation_0-logloss:0.21995\n",
      "[1184]\tvalidation_0-logloss:0.21994\n",
      "[1185]\tvalidation_0-logloss:0.21993\n",
      "[1186]\tvalidation_0-logloss:0.21993\n",
      "[1187]\tvalidation_0-logloss:0.21992\n",
      "[1188]\tvalidation_0-logloss:0.21991\n",
      "[1189]\tvalidation_0-logloss:0.21991\n",
      "[1190]\tvalidation_0-logloss:0.21990\n",
      "[1191]\tvalidation_0-logloss:0.21989\n",
      "[1192]\tvalidation_0-logloss:0.21988\n",
      "[1193]\tvalidation_0-logloss:0.21988\n",
      "[1194]\tvalidation_0-logloss:0.21987\n",
      "[1195]\tvalidation_0-logloss:0.21986\n",
      "[1196]\tvalidation_0-logloss:0.21985\n",
      "[1197]\tvalidation_0-logloss:0.21984\n",
      "[1198]\tvalidation_0-logloss:0.21983\n",
      "[1199]\tvalidation_0-logloss:0.21983\n",
      "[1200]\tvalidation_0-logloss:0.21982\n",
      "[1201]\tvalidation_0-logloss:0.21981\n",
      "[1202]\tvalidation_0-logloss:0.21981\n",
      "[1203]\tvalidation_0-logloss:0.21980\n",
      "[1204]\tvalidation_0-logloss:0.21980\n",
      "[1205]\tvalidation_0-logloss:0.21979\n",
      "[1206]\tvalidation_0-logloss:0.21978\n",
      "[1207]\tvalidation_0-logloss:0.21977\n",
      "[1208]\tvalidation_0-logloss:0.21976\n",
      "[1209]\tvalidation_0-logloss:0.21976\n",
      "[1210]\tvalidation_0-logloss:0.21975\n",
      "[1211]\tvalidation_0-logloss:0.21974\n",
      "[1212]\tvalidation_0-logloss:0.21973\n",
      "[1213]\tvalidation_0-logloss:0.21973\n",
      "[1214]\tvalidation_0-logloss:0.21972\n",
      "[1215]\tvalidation_0-logloss:0.21971\n",
      "[1216]\tvalidation_0-logloss:0.21969\n",
      "[1217]\tvalidation_0-logloss:0.21968\n",
      "[1218]\tvalidation_0-logloss:0.21968\n",
      "[1219]\tvalidation_0-logloss:0.21967\n",
      "[1220]\tvalidation_0-logloss:0.21966\n",
      "[1221]\tvalidation_0-logloss:0.21965\n",
      "[1222]\tvalidation_0-logloss:0.21964\n",
      "[1223]\tvalidation_0-logloss:0.21963\n",
      "[1224]\tvalidation_0-logloss:0.21962\n",
      "[1225]\tvalidation_0-logloss:0.21961\n",
      "[1226]\tvalidation_0-logloss:0.21961\n",
      "[1227]\tvalidation_0-logloss:0.21959\n",
      "[1228]\tvalidation_0-logloss:0.21958\n",
      "[1229]\tvalidation_0-logloss:0.21957\n",
      "[1230]\tvalidation_0-logloss:0.21957\n",
      "[1231]\tvalidation_0-logloss:0.21956\n",
      "[1232]\tvalidation_0-logloss:0.21955\n",
      "[1233]\tvalidation_0-logloss:0.21955\n",
      "[1234]\tvalidation_0-logloss:0.21954\n",
      "[1235]\tvalidation_0-logloss:0.21954\n",
      "[1236]\tvalidation_0-logloss:0.21953\n",
      "[1237]\tvalidation_0-logloss:0.21953\n",
      "[1238]\tvalidation_0-logloss:0.21952\n",
      "[1239]\tvalidation_0-logloss:0.21952\n",
      "[1240]\tvalidation_0-logloss:0.21950\n",
      "[1241]\tvalidation_0-logloss:0.21950\n",
      "[1242]\tvalidation_0-logloss:0.21949\n",
      "[1243]\tvalidation_0-logloss:0.21948\n",
      "[1244]\tvalidation_0-logloss:0.21947\n",
      "[1245]\tvalidation_0-logloss:0.21946\n",
      "[1246]\tvalidation_0-logloss:0.21945\n",
      "[1247]\tvalidation_0-logloss:0.21945\n",
      "[1248]\tvalidation_0-logloss:0.21943\n",
      "[1249]\tvalidation_0-logloss:0.21942\n",
      "[1250]\tvalidation_0-logloss:0.21942\n",
      "[1251]\tvalidation_0-logloss:0.21941\n",
      "[1252]\tvalidation_0-logloss:0.21940\n",
      "[1253]\tvalidation_0-logloss:0.21939\n",
      "[1254]\tvalidation_0-logloss:0.21938\n",
      "[1255]\tvalidation_0-logloss:0.21938\n",
      "[1256]\tvalidation_0-logloss:0.21937\n",
      "[1257]\tvalidation_0-logloss:0.21936\n",
      "[1258]\tvalidation_0-logloss:0.21936\n",
      "[1259]\tvalidation_0-logloss:0.21935\n",
      "[1260]\tvalidation_0-logloss:0.21935\n",
      "[1261]\tvalidation_0-logloss:0.21934\n",
      "[1262]\tvalidation_0-logloss:0.21933\n",
      "[1263]\tvalidation_0-logloss:0.21933\n",
      "[1264]\tvalidation_0-logloss:0.21932\n",
      "[1265]\tvalidation_0-logloss:0.21931\n",
      "[1266]\tvalidation_0-logloss:0.21931\n",
      "[1267]\tvalidation_0-logloss:0.21930\n",
      "[1268]\tvalidation_0-logloss:0.21930\n",
      "[1269]\tvalidation_0-logloss:0.21929\n",
      "[1270]\tvalidation_0-logloss:0.21928\n",
      "[1271]\tvalidation_0-logloss:0.21927\n",
      "[1272]\tvalidation_0-logloss:0.21927\n",
      "[1273]\tvalidation_0-logloss:0.21926\n",
      "[1274]\tvalidation_0-logloss:0.21925\n",
      "[1275]\tvalidation_0-logloss:0.21925\n",
      "[1276]\tvalidation_0-logloss:0.21924\n",
      "[1277]\tvalidation_0-logloss:0.21923\n",
      "[1278]\tvalidation_0-logloss:0.21923\n",
      "[1279]\tvalidation_0-logloss:0.21922\n",
      "[1280]\tvalidation_0-logloss:0.21922\n",
      "[1281]\tvalidation_0-logloss:0.21921\n",
      "[1282]\tvalidation_0-logloss:0.21920\n",
      "[1283]\tvalidation_0-logloss:0.21919\n",
      "[1284]\tvalidation_0-logloss:0.21919\n",
      "[1285]\tvalidation_0-logloss:0.21918\n",
      "[1286]\tvalidation_0-logloss:0.21918\n",
      "[1287]\tvalidation_0-logloss:0.21916\n",
      "[1288]\tvalidation_0-logloss:0.21916\n",
      "[1289]\tvalidation_0-logloss:0.21916\n",
      "[1290]\tvalidation_0-logloss:0.21915\n",
      "[1291]\tvalidation_0-logloss:0.21914\n",
      "[1292]\tvalidation_0-logloss:0.21914\n",
      "[1293]\tvalidation_0-logloss:0.21913\n",
      "[1294]\tvalidation_0-logloss:0.21912\n",
      "[1295]\tvalidation_0-logloss:0.21912\n",
      "[1296]\tvalidation_0-logloss:0.21911\n",
      "[1297]\tvalidation_0-logloss:0.21910\n",
      "[1298]\tvalidation_0-logloss:0.21909\n",
      "[1299]\tvalidation_0-logloss:0.21909\n",
      "[1300]\tvalidation_0-logloss:0.21908\n",
      "[1301]\tvalidation_0-logloss:0.21908\n",
      "[1302]\tvalidation_0-logloss:0.21907\n",
      "[1303]\tvalidation_0-logloss:0.21906\n",
      "[1304]\tvalidation_0-logloss:0.21906\n",
      "[1305]\tvalidation_0-logloss:0.21905\n",
      "[1306]\tvalidation_0-logloss:0.21905\n",
      "[1307]\tvalidation_0-logloss:0.21904\n",
      "[1308]\tvalidation_0-logloss:0.21904\n",
      "[1309]\tvalidation_0-logloss:0.21903\n",
      "[1310]\tvalidation_0-logloss:0.21902\n",
      "[1311]\tvalidation_0-logloss:0.21902\n",
      "[1312]\tvalidation_0-logloss:0.21901\n",
      "[1313]\tvalidation_0-logloss:0.21901\n",
      "[1314]\tvalidation_0-logloss:0.21900\n",
      "[1315]\tvalidation_0-logloss:0.21900\n",
      "[1316]\tvalidation_0-logloss:0.21900\n",
      "[1317]\tvalidation_0-logloss:0.21899\n",
      "[1318]\tvalidation_0-logloss:0.21898\n",
      "[1319]\tvalidation_0-logloss:0.21897\n",
      "[1320]\tvalidation_0-logloss:0.21897\n",
      "[1321]\tvalidation_0-logloss:0.21896\n",
      "[1322]\tvalidation_0-logloss:0.21896\n",
      "[1323]\tvalidation_0-logloss:0.21895\n",
      "[1324]\tvalidation_0-logloss:0.21895\n",
      "[1325]\tvalidation_0-logloss:0.21894\n",
      "[1326]\tvalidation_0-logloss:0.21893\n",
      "[1327]\tvalidation_0-logloss:0.21893\n",
      "[1328]\tvalidation_0-logloss:0.21892\n",
      "[1329]\tvalidation_0-logloss:0.21891\n",
      "[1330]\tvalidation_0-logloss:0.21890\n",
      "[1331]\tvalidation_0-logloss:0.21890\n",
      "[1332]\tvalidation_0-logloss:0.21889\n",
      "[1333]\tvalidation_0-logloss:0.21889\n",
      "[1334]\tvalidation_0-logloss:0.21888\n",
      "[1335]\tvalidation_0-logloss:0.21887\n",
      "[1336]\tvalidation_0-logloss:0.21886\n",
      "[1337]\tvalidation_0-logloss:0.21886\n",
      "[1338]\tvalidation_0-logloss:0.21885\n",
      "[1339]\tvalidation_0-logloss:0.21885\n",
      "[1340]\tvalidation_0-logloss:0.21884\n",
      "[1341]\tvalidation_0-logloss:0.21883\n",
      "[1342]\tvalidation_0-logloss:0.21883\n",
      "[1343]\tvalidation_0-logloss:0.21881\n",
      "[1344]\tvalidation_0-logloss:0.21881\n",
      "[1345]\tvalidation_0-logloss:0.21880\n",
      "[1346]\tvalidation_0-logloss:0.21879\n",
      "[1347]\tvalidation_0-logloss:0.21879\n",
      "[1348]\tvalidation_0-logloss:0.21878\n",
      "[1349]\tvalidation_0-logloss:0.21877\n",
      "[1350]\tvalidation_0-logloss:0.21877\n",
      "[1351]\tvalidation_0-logloss:0.21876\n",
      "[1352]\tvalidation_0-logloss:0.21876\n",
      "[1353]\tvalidation_0-logloss:0.21875\n",
      "[1354]\tvalidation_0-logloss:0.21875\n",
      "[1355]\tvalidation_0-logloss:0.21874\n",
      "[1356]\tvalidation_0-logloss:0.21874\n",
      "[1357]\tvalidation_0-logloss:0.21873\n",
      "[1358]\tvalidation_0-logloss:0.21872\n",
      "[1359]\tvalidation_0-logloss:0.21872\n",
      "[1360]\tvalidation_0-logloss:0.21872\n",
      "[1361]\tvalidation_0-logloss:0.21871\n",
      "[1362]\tvalidation_0-logloss:0.21870\n",
      "[1363]\tvalidation_0-logloss:0.21870\n",
      "[1364]\tvalidation_0-logloss:0.21869\n",
      "[1365]\tvalidation_0-logloss:0.21868\n",
      "[1366]\tvalidation_0-logloss:0.21867\n",
      "[1367]\tvalidation_0-logloss:0.21867\n",
      "[1368]\tvalidation_0-logloss:0.21866\n",
      "[1369]\tvalidation_0-logloss:0.21865\n",
      "[1370]\tvalidation_0-logloss:0.21865\n",
      "[1371]\tvalidation_0-logloss:0.21864\n",
      "[1372]\tvalidation_0-logloss:0.21864\n",
      "[1373]\tvalidation_0-logloss:0.21862\n",
      "[1374]\tvalidation_0-logloss:0.21861\n",
      "[1375]\tvalidation_0-logloss:0.21860\n",
      "[1376]\tvalidation_0-logloss:0.21860\n",
      "[1377]\tvalidation_0-logloss:0.21859\n",
      "[1378]\tvalidation_0-logloss:0.21859\n",
      "[1379]\tvalidation_0-logloss:0.21858\n",
      "[1380]\tvalidation_0-logloss:0.21857\n",
      "[1381]\tvalidation_0-logloss:0.21857\n",
      "[1382]\tvalidation_0-logloss:0.21856\n",
      "[1383]\tvalidation_0-logloss:0.21855\n",
      "[1384]\tvalidation_0-logloss:0.21855\n",
      "[1385]\tvalidation_0-logloss:0.21854\n",
      "[1386]\tvalidation_0-logloss:0.21854\n",
      "[1387]\tvalidation_0-logloss:0.21853\n",
      "[1388]\tvalidation_0-logloss:0.21853\n",
      "[1389]\tvalidation_0-logloss:0.21852\n",
      "[1390]\tvalidation_0-logloss:0.21852\n",
      "[1391]\tvalidation_0-logloss:0.21850\n",
      "[1392]\tvalidation_0-logloss:0.21849\n",
      "[1393]\tvalidation_0-logloss:0.21849\n",
      "[1394]\tvalidation_0-logloss:0.21848\n",
      "[1395]\tvalidation_0-logloss:0.21847\n",
      "[1396]\tvalidation_0-logloss:0.21847\n",
      "[1397]\tvalidation_0-logloss:0.21846\n",
      "[1398]\tvalidation_0-logloss:0.21845\n",
      "[1399]\tvalidation_0-logloss:0.21844\n",
      "[1400]\tvalidation_0-logloss:0.21843\n",
      "[1401]\tvalidation_0-logloss:0.21843\n",
      "[1402]\tvalidation_0-logloss:0.21843\n",
      "[1403]\tvalidation_0-logloss:0.21842\n",
      "[1404]\tvalidation_0-logloss:0.21841\n",
      "[1405]\tvalidation_0-logloss:0.21840\n",
      "[1406]\tvalidation_0-logloss:0.21839\n",
      "[1407]\tvalidation_0-logloss:0.21838\n",
      "[1408]\tvalidation_0-logloss:0.21838\n",
      "[1409]\tvalidation_0-logloss:0.21837\n",
      "[1410]\tvalidation_0-logloss:0.21836\n",
      "[1411]\tvalidation_0-logloss:0.21834\n",
      "[1412]\tvalidation_0-logloss:0.21833\n",
      "[1413]\tvalidation_0-logloss:0.21833\n",
      "[1414]\tvalidation_0-logloss:0.21832\n",
      "[1415]\tvalidation_0-logloss:0.21832\n",
      "[1416]\tvalidation_0-logloss:0.21831\n",
      "[1417]\tvalidation_0-logloss:0.21831\n",
      "[1418]\tvalidation_0-logloss:0.21830\n",
      "[1419]\tvalidation_0-logloss:0.21830\n",
      "[1420]\tvalidation_0-logloss:0.21830\n",
      "[1421]\tvalidation_0-logloss:0.21829\n",
      "[1422]\tvalidation_0-logloss:0.21828\n",
      "[1423]\tvalidation_0-logloss:0.21827\n",
      "[1424]\tvalidation_0-logloss:0.21827\n",
      "[1425]\tvalidation_0-logloss:0.21826\n",
      "[1426]\tvalidation_0-logloss:0.21825\n",
      "[1427]\tvalidation_0-logloss:0.21825\n",
      "[1428]\tvalidation_0-logloss:0.21824\n",
      "[1429]\tvalidation_0-logloss:0.21823\n",
      "[1430]\tvalidation_0-logloss:0.21823\n",
      "[1431]\tvalidation_0-logloss:0.21822\n",
      "[1432]\tvalidation_0-logloss:0.21822\n",
      "[1433]\tvalidation_0-logloss:0.21821\n",
      "[1434]\tvalidation_0-logloss:0.21821\n",
      "[1435]\tvalidation_0-logloss:0.21820\n",
      "[1436]\tvalidation_0-logloss:0.21820\n",
      "[1437]\tvalidation_0-logloss:0.21819\n",
      "[1438]\tvalidation_0-logloss:0.21819\n",
      "[1439]\tvalidation_0-logloss:0.21818\n",
      "[1440]\tvalidation_0-logloss:0.21817\n",
      "[1441]\tvalidation_0-logloss:0.21817\n",
      "[1442]\tvalidation_0-logloss:0.21816\n",
      "[1443]\tvalidation_0-logloss:0.21815\n",
      "[1444]\tvalidation_0-logloss:0.21814\n",
      "[1445]\tvalidation_0-logloss:0.21814\n",
      "[1446]\tvalidation_0-logloss:0.21813\n",
      "[1447]\tvalidation_0-logloss:0.21812\n",
      "[1448]\tvalidation_0-logloss:0.21812\n",
      "[1449]\tvalidation_0-logloss:0.21811\n",
      "[1450]\tvalidation_0-logloss:0.21810\n",
      "[1451]\tvalidation_0-logloss:0.21810\n",
      "[1452]\tvalidation_0-logloss:0.21809\n",
      "[1453]\tvalidation_0-logloss:0.21809\n",
      "[1454]\tvalidation_0-logloss:0.21808\n",
      "[1455]\tvalidation_0-logloss:0.21807\n",
      "[1456]\tvalidation_0-logloss:0.21806\n",
      "[1457]\tvalidation_0-logloss:0.21806\n",
      "[1458]\tvalidation_0-logloss:0.21805\n",
      "[1459]\tvalidation_0-logloss:0.21805\n",
      "[1460]\tvalidation_0-logloss:0.21804\n",
      "[1461]\tvalidation_0-logloss:0.21804\n",
      "[1462]\tvalidation_0-logloss:0.21803\n",
      "[1463]\tvalidation_0-logloss:0.21803\n",
      "[1464]\tvalidation_0-logloss:0.21802\n",
      "[1465]\tvalidation_0-logloss:0.21802\n",
      "[1466]\tvalidation_0-logloss:0.21801\n",
      "[1467]\tvalidation_0-logloss:0.21800\n",
      "[1468]\tvalidation_0-logloss:0.21800\n",
      "[1469]\tvalidation_0-logloss:0.21799\n",
      "[1470]\tvalidation_0-logloss:0.21799\n",
      "[1471]\tvalidation_0-logloss:0.21798\n",
      "[1472]\tvalidation_0-logloss:0.21798\n",
      "[1473]\tvalidation_0-logloss:0.21797\n",
      "[1474]\tvalidation_0-logloss:0.21796\n",
      "[1475]\tvalidation_0-logloss:0.21796\n",
      "[1476]\tvalidation_0-logloss:0.21795\n",
      "[1477]\tvalidation_0-logloss:0.21795\n",
      "[1478]\tvalidation_0-logloss:0.21794\n",
      "[1479]\tvalidation_0-logloss:0.21794\n",
      "[1480]\tvalidation_0-logloss:0.21793\n",
      "[1481]\tvalidation_0-logloss:0.21793\n",
      "[1482]\tvalidation_0-logloss:0.21792\n",
      "[1483]\tvalidation_0-logloss:0.21791\n",
      "[1484]\tvalidation_0-logloss:0.21791\n",
      "[1485]\tvalidation_0-logloss:0.21790\n",
      "[1486]\tvalidation_0-logloss:0.21790\n",
      "[1487]\tvalidation_0-logloss:0.21789\n",
      "[1488]\tvalidation_0-logloss:0.21789\n",
      "[1489]\tvalidation_0-logloss:0.21788\n",
      "[1490]\tvalidation_0-logloss:0.21787\n",
      "[1491]\tvalidation_0-logloss:0.21786\n",
      "[1492]\tvalidation_0-logloss:0.21785\n",
      "[1493]\tvalidation_0-logloss:0.21784\n",
      "[1494]\tvalidation_0-logloss:0.21783\n",
      "[1495]\tvalidation_0-logloss:0.21783\n",
      "[1496]\tvalidation_0-logloss:0.21782\n",
      "[1497]\tvalidation_0-logloss:0.21782\n",
      "[1498]\tvalidation_0-logloss:0.21781\n",
      "[1499]\tvalidation_0-logloss:0.21781\n",
      "[1500]\tvalidation_0-logloss:0.21780\n",
      "[1501]\tvalidation_0-logloss:0.21780\n",
      "[1502]\tvalidation_0-logloss:0.21779\n",
      "[1503]\tvalidation_0-logloss:0.21778\n",
      "[1504]\tvalidation_0-logloss:0.21778\n",
      "[1505]\tvalidation_0-logloss:0.21777\n",
      "[1506]\tvalidation_0-logloss:0.21777\n",
      "[1507]\tvalidation_0-logloss:0.21776\n",
      "[1508]\tvalidation_0-logloss:0.21776\n",
      "[1509]\tvalidation_0-logloss:0.21775\n",
      "[1510]\tvalidation_0-logloss:0.21774\n",
      "[1511]\tvalidation_0-logloss:0.21774\n",
      "[1512]\tvalidation_0-logloss:0.21774\n",
      "[1513]\tvalidation_0-logloss:0.21773\n",
      "[1514]\tvalidation_0-logloss:0.21773\n",
      "[1515]\tvalidation_0-logloss:0.21772\n",
      "[1516]\tvalidation_0-logloss:0.21771\n",
      "[1517]\tvalidation_0-logloss:0.21771\n",
      "[1518]\tvalidation_0-logloss:0.21770\n",
      "[1519]\tvalidation_0-logloss:0.21769\n",
      "[1520]\tvalidation_0-logloss:0.21768\n",
      "[1521]\tvalidation_0-logloss:0.21767\n",
      "[1522]\tvalidation_0-logloss:0.21767\n",
      "[1523]\tvalidation_0-logloss:0.21766\n",
      "[1524]\tvalidation_0-logloss:0.21766\n",
      "[1525]\tvalidation_0-logloss:0.21766\n",
      "[1526]\tvalidation_0-logloss:0.21765\n",
      "[1527]\tvalidation_0-logloss:0.21765\n",
      "[1528]\tvalidation_0-logloss:0.21764\n",
      "[1529]\tvalidation_0-logloss:0.21763\n",
      "[1530]\tvalidation_0-logloss:0.21763\n",
      "[1531]\tvalidation_0-logloss:0.21762\n",
      "[1532]\tvalidation_0-logloss:0.21762\n",
      "[1533]\tvalidation_0-logloss:0.21761\n",
      "[1534]\tvalidation_0-logloss:0.21761\n",
      "[1535]\tvalidation_0-logloss:0.21761\n",
      "[1536]\tvalidation_0-logloss:0.21761\n",
      "[1537]\tvalidation_0-logloss:0.21760\n",
      "[1538]\tvalidation_0-logloss:0.21759\n",
      "[1539]\tvalidation_0-logloss:0.21759\n",
      "[1540]\tvalidation_0-logloss:0.21758\n",
      "[1541]\tvalidation_0-logloss:0.21757\n",
      "[1542]\tvalidation_0-logloss:0.21757\n",
      "[1543]\tvalidation_0-logloss:0.21757\n",
      "[1544]\tvalidation_0-logloss:0.21756\n",
      "[1545]\tvalidation_0-logloss:0.21756\n",
      "[1546]\tvalidation_0-logloss:0.21755\n",
      "[1547]\tvalidation_0-logloss:0.21755\n",
      "[1548]\tvalidation_0-logloss:0.21754\n",
      "[1549]\tvalidation_0-logloss:0.21754\n",
      "[1550]\tvalidation_0-logloss:0.21753\n",
      "[1551]\tvalidation_0-logloss:0.21753\n",
      "[1552]\tvalidation_0-logloss:0.21752\n",
      "[1553]\tvalidation_0-logloss:0.21752\n",
      "[1554]\tvalidation_0-logloss:0.21751\n",
      "[1555]\tvalidation_0-logloss:0.21751\n",
      "[1556]\tvalidation_0-logloss:0.21750\n",
      "[1557]\tvalidation_0-logloss:0.21749\n",
      "[1558]\tvalidation_0-logloss:0.21749\n",
      "[1559]\tvalidation_0-logloss:0.21748\n",
      "[1560]\tvalidation_0-logloss:0.21747\n",
      "[1561]\tvalidation_0-logloss:0.21747\n",
      "[1562]\tvalidation_0-logloss:0.21747\n",
      "[1563]\tvalidation_0-logloss:0.21746\n",
      "[1564]\tvalidation_0-logloss:0.21745\n",
      "[1565]\tvalidation_0-logloss:0.21745\n",
      "[1566]\tvalidation_0-logloss:0.21744\n",
      "[1567]\tvalidation_0-logloss:0.21743\n",
      "[1568]\tvalidation_0-logloss:0.21743\n",
      "[1569]\tvalidation_0-logloss:0.21742\n",
      "[1570]\tvalidation_0-logloss:0.21742\n",
      "[1571]\tvalidation_0-logloss:0.21741\n",
      "[1572]\tvalidation_0-logloss:0.21741\n",
      "[1573]\tvalidation_0-logloss:0.21740\n",
      "[1574]\tvalidation_0-logloss:0.21740\n",
      "[1575]\tvalidation_0-logloss:0.21739\n",
      "[1576]\tvalidation_0-logloss:0.21739\n",
      "[1577]\tvalidation_0-logloss:0.21738\n",
      "[1578]\tvalidation_0-logloss:0.21738\n",
      "[1579]\tvalidation_0-logloss:0.21737\n",
      "[1580]\tvalidation_0-logloss:0.21737\n",
      "[1581]\tvalidation_0-logloss:0.21736\n",
      "[1582]\tvalidation_0-logloss:0.21736\n",
      "[1583]\tvalidation_0-logloss:0.21735\n",
      "[1584]\tvalidation_0-logloss:0.21735\n",
      "[1585]\tvalidation_0-logloss:0.21734\n",
      "[1586]\tvalidation_0-logloss:0.21733\n",
      "[1587]\tvalidation_0-logloss:0.21733\n",
      "[1588]\tvalidation_0-logloss:0.21732\n",
      "[1589]\tvalidation_0-logloss:0.21732\n",
      "[1590]\tvalidation_0-logloss:0.21731\n",
      "[1591]\tvalidation_0-logloss:0.21731\n",
      "[1592]\tvalidation_0-logloss:0.21730\n",
      "[1593]\tvalidation_0-logloss:0.21730\n",
      "[1594]\tvalidation_0-logloss:0.21729\n",
      "[1595]\tvalidation_0-logloss:0.21729\n",
      "[1596]\tvalidation_0-logloss:0.21728\n",
      "[1597]\tvalidation_0-logloss:0.21728\n",
      "[1598]\tvalidation_0-logloss:0.21728\n",
      "[1599]\tvalidation_0-logloss:0.21727\n",
      "[1600]\tvalidation_0-logloss:0.21726\n",
      "[1601]\tvalidation_0-logloss:0.21726\n",
      "[1602]\tvalidation_0-logloss:0.21724\n",
      "[1603]\tvalidation_0-logloss:0.21724\n",
      "[1604]\tvalidation_0-logloss:0.21723\n",
      "[1605]\tvalidation_0-logloss:0.21722\n",
      "[1606]\tvalidation_0-logloss:0.21722\n",
      "[1607]\tvalidation_0-logloss:0.21721\n",
      "[1608]\tvalidation_0-logloss:0.21721\n",
      "[1609]\tvalidation_0-logloss:0.21720\n",
      "[1610]\tvalidation_0-logloss:0.21720\n",
      "[1611]\tvalidation_0-logloss:0.21719\n",
      "[1612]\tvalidation_0-logloss:0.21719\n",
      "[1613]\tvalidation_0-logloss:0.21718\n",
      "[1614]\tvalidation_0-logloss:0.21718\n",
      "[1615]\tvalidation_0-logloss:0.21717\n",
      "[1616]\tvalidation_0-logloss:0.21716\n",
      "[1617]\tvalidation_0-logloss:0.21716\n",
      "[1618]\tvalidation_0-logloss:0.21715\n",
      "[1619]\tvalidation_0-logloss:0.21715\n",
      "[1620]\tvalidation_0-logloss:0.21714\n",
      "[1621]\tvalidation_0-logloss:0.21714\n",
      "[1622]\tvalidation_0-logloss:0.21713\n",
      "[1623]\tvalidation_0-logloss:0.21712\n",
      "[1624]\tvalidation_0-logloss:0.21711\n",
      "[1625]\tvalidation_0-logloss:0.21711\n",
      "[1626]\tvalidation_0-logloss:0.21710\n",
      "[1627]\tvalidation_0-logloss:0.21709\n",
      "[1628]\tvalidation_0-logloss:0.21709\n",
      "[1629]\tvalidation_0-logloss:0.21708\n",
      "[1630]\tvalidation_0-logloss:0.21707\n",
      "[1631]\tvalidation_0-logloss:0.21707\n",
      "[1632]\tvalidation_0-logloss:0.21706\n",
      "[1633]\tvalidation_0-logloss:0.21706\n",
      "[1634]\tvalidation_0-logloss:0.21705\n",
      "[1635]\tvalidation_0-logloss:0.21705\n",
      "[1636]\tvalidation_0-logloss:0.21704\n",
      "[1637]\tvalidation_0-logloss:0.21704\n",
      "[1638]\tvalidation_0-logloss:0.21703\n",
      "[1639]\tvalidation_0-logloss:0.21703\n",
      "[1640]\tvalidation_0-logloss:0.21702\n",
      "[1641]\tvalidation_0-logloss:0.21702\n",
      "[1642]\tvalidation_0-logloss:0.21701\n",
      "[1643]\tvalidation_0-logloss:0.21701\n",
      "[1644]\tvalidation_0-logloss:0.21700\n",
      "[1645]\tvalidation_0-logloss:0.21699\n",
      "[1646]\tvalidation_0-logloss:0.21698\n",
      "[1647]\tvalidation_0-logloss:0.21698\n",
      "[1648]\tvalidation_0-logloss:0.21696\n",
      "[1649]\tvalidation_0-logloss:0.21696\n",
      "[1650]\tvalidation_0-logloss:0.21696\n",
      "[1651]\tvalidation_0-logloss:0.21695\n",
      "[1652]\tvalidation_0-logloss:0.21695\n",
      "[1653]\tvalidation_0-logloss:0.21694\n",
      "[1654]\tvalidation_0-logloss:0.21694\n",
      "[1655]\tvalidation_0-logloss:0.21693\n",
      "[1656]\tvalidation_0-logloss:0.21692\n",
      "[1657]\tvalidation_0-logloss:0.21691\n",
      "[1658]\tvalidation_0-logloss:0.21691\n",
      "[1659]\tvalidation_0-logloss:0.21690\n",
      "[1660]\tvalidation_0-logloss:0.21689\n",
      "[1661]\tvalidation_0-logloss:0.21689\n",
      "[1662]\tvalidation_0-logloss:0.21689\n",
      "[1663]\tvalidation_0-logloss:0.21688\n",
      "[1664]\tvalidation_0-logloss:0.21687\n",
      "[1665]\tvalidation_0-logloss:0.21687\n",
      "[1666]\tvalidation_0-logloss:0.21686\n",
      "[1667]\tvalidation_0-logloss:0.21686\n",
      "[1668]\tvalidation_0-logloss:0.21685\n",
      "[1669]\tvalidation_0-logloss:0.21684\n",
      "[1670]\tvalidation_0-logloss:0.21683\n",
      "[1671]\tvalidation_0-logloss:0.21682\n",
      "[1672]\tvalidation_0-logloss:0.21682\n",
      "[1673]\tvalidation_0-logloss:0.21682\n",
      "[1674]\tvalidation_0-logloss:0.21681\n",
      "[1675]\tvalidation_0-logloss:0.21681\n",
      "[1676]\tvalidation_0-logloss:0.21679\n",
      "[1677]\tvalidation_0-logloss:0.21679\n",
      "[1678]\tvalidation_0-logloss:0.21679\n",
      "[1679]\tvalidation_0-logloss:0.21678\n",
      "[1680]\tvalidation_0-logloss:0.21678\n",
      "[1681]\tvalidation_0-logloss:0.21676\n",
      "[1682]\tvalidation_0-logloss:0.21675\n",
      "[1683]\tvalidation_0-logloss:0.21675\n",
      "[1684]\tvalidation_0-logloss:0.21674\n",
      "[1685]\tvalidation_0-logloss:0.21674\n",
      "[1686]\tvalidation_0-logloss:0.21673\n",
      "[1687]\tvalidation_0-logloss:0.21673\n",
      "[1688]\tvalidation_0-logloss:0.21673\n",
      "[1689]\tvalidation_0-logloss:0.21672\n",
      "[1690]\tvalidation_0-logloss:0.21672\n",
      "[1691]\tvalidation_0-logloss:0.21670\n",
      "[1692]\tvalidation_0-logloss:0.21669\n",
      "[1693]\tvalidation_0-logloss:0.21668\n",
      "[1694]\tvalidation_0-logloss:0.21668\n",
      "[1695]\tvalidation_0-logloss:0.21667\n",
      "[1696]\tvalidation_0-logloss:0.21667\n",
      "[1697]\tvalidation_0-logloss:0.21665\n",
      "[1698]\tvalidation_0-logloss:0.21665\n",
      "[1699]\tvalidation_0-logloss:0.21664\n",
      "[1700]\tvalidation_0-logloss:0.21664\n",
      "[1701]\tvalidation_0-logloss:0.21663\n",
      "[1702]\tvalidation_0-logloss:0.21663\n",
      "[1703]\tvalidation_0-logloss:0.21662\n",
      "[1704]\tvalidation_0-logloss:0.21661\n",
      "[1705]\tvalidation_0-logloss:0.21660\n",
      "[1706]\tvalidation_0-logloss:0.21660\n",
      "[1707]\tvalidation_0-logloss:0.21659\n",
      "[1708]\tvalidation_0-logloss:0.21659\n",
      "[1709]\tvalidation_0-logloss:0.21658\n",
      "[1710]\tvalidation_0-logloss:0.21658\n",
      "[1711]\tvalidation_0-logloss:0.21657\n",
      "[1712]\tvalidation_0-logloss:0.21656\n",
      "[1713]\tvalidation_0-logloss:0.21656\n",
      "[1714]\tvalidation_0-logloss:0.21655\n",
      "[1715]\tvalidation_0-logloss:0.21655\n",
      "[1716]\tvalidation_0-logloss:0.21654\n",
      "[1717]\tvalidation_0-logloss:0.21653\n",
      "[1718]\tvalidation_0-logloss:0.21653\n",
      "[1719]\tvalidation_0-logloss:0.21652\n",
      "[1720]\tvalidation_0-logloss:0.21652\n",
      "[1721]\tvalidation_0-logloss:0.21651\n",
      "[1722]\tvalidation_0-logloss:0.21651\n",
      "[1723]\tvalidation_0-logloss:0.21650\n",
      "[1724]\tvalidation_0-logloss:0.21650\n",
      "[1725]\tvalidation_0-logloss:0.21649\n",
      "[1726]\tvalidation_0-logloss:0.21649\n",
      "[1727]\tvalidation_0-logloss:0.21648\n",
      "[1728]\tvalidation_0-logloss:0.21648\n",
      "[1729]\tvalidation_0-logloss:0.21647\n",
      "[1730]\tvalidation_0-logloss:0.21647\n",
      "[1731]\tvalidation_0-logloss:0.21646\n",
      "[1732]\tvalidation_0-logloss:0.21646\n",
      "[1733]\tvalidation_0-logloss:0.21645\n",
      "[1734]\tvalidation_0-logloss:0.21644\n",
      "[1735]\tvalidation_0-logloss:0.21644\n",
      "[1736]\tvalidation_0-logloss:0.21643\n",
      "[1737]\tvalidation_0-logloss:0.21643\n",
      "[1738]\tvalidation_0-logloss:0.21642\n",
      "[1739]\tvalidation_0-logloss:0.21641\n",
      "[1740]\tvalidation_0-logloss:0.21641\n",
      "[1741]\tvalidation_0-logloss:0.21640\n",
      "[1742]\tvalidation_0-logloss:0.21640\n",
      "[1743]\tvalidation_0-logloss:0.21639\n",
      "[1744]\tvalidation_0-logloss:0.21639\n",
      "[1745]\tvalidation_0-logloss:0.21638\n",
      "[1746]\tvalidation_0-logloss:0.21637\n",
      "[1747]\tvalidation_0-logloss:0.21637\n",
      "[1748]\tvalidation_0-logloss:0.21637\n",
      "[1749]\tvalidation_0-logloss:0.21636\n",
      "[1750]\tvalidation_0-logloss:0.21636\n",
      "[1751]\tvalidation_0-logloss:0.21635\n",
      "[1752]\tvalidation_0-logloss:0.21634\n",
      "[1753]\tvalidation_0-logloss:0.21633\n",
      "[1754]\tvalidation_0-logloss:0.21633\n",
      "[1755]\tvalidation_0-logloss:0.21632\n",
      "[1756]\tvalidation_0-logloss:0.21631\n",
      "[1757]\tvalidation_0-logloss:0.21631\n",
      "[1758]\tvalidation_0-logloss:0.21630\n",
      "[1759]\tvalidation_0-logloss:0.21629\n",
      "[1760]\tvalidation_0-logloss:0.21629\n",
      "[1761]\tvalidation_0-logloss:0.21628\n",
      "[1762]\tvalidation_0-logloss:0.21627\n",
      "[1763]\tvalidation_0-logloss:0.21626\n",
      "[1764]\tvalidation_0-logloss:0.21626\n",
      "[1765]\tvalidation_0-logloss:0.21625\n",
      "[1766]\tvalidation_0-logloss:0.21625\n",
      "[1767]\tvalidation_0-logloss:0.21624\n",
      "[1768]\tvalidation_0-logloss:0.21624\n",
      "[1769]\tvalidation_0-logloss:0.21623\n",
      "[1770]\tvalidation_0-logloss:0.21622\n",
      "[1771]\tvalidation_0-logloss:0.21622\n",
      "[1772]\tvalidation_0-logloss:0.21621\n",
      "[1773]\tvalidation_0-logloss:0.21621\n",
      "[1774]\tvalidation_0-logloss:0.21621\n",
      "[1775]\tvalidation_0-logloss:0.21620\n",
      "[1776]\tvalidation_0-logloss:0.21620\n",
      "[1777]\tvalidation_0-logloss:0.21620\n",
      "[1778]\tvalidation_0-logloss:0.21619\n",
      "[1779]\tvalidation_0-logloss:0.21619\n",
      "[1780]\tvalidation_0-logloss:0.21618\n",
      "[1781]\tvalidation_0-logloss:0.21618\n",
      "[1782]\tvalidation_0-logloss:0.21617\n",
      "[1783]\tvalidation_0-logloss:0.21617\n",
      "[1784]\tvalidation_0-logloss:0.21616\n",
      "[1785]\tvalidation_0-logloss:0.21616\n",
      "[1786]\tvalidation_0-logloss:0.21615\n",
      "[1787]\tvalidation_0-logloss:0.21615\n",
      "[1788]\tvalidation_0-logloss:0.21614\n",
      "[1789]\tvalidation_0-logloss:0.21613\n",
      "[1790]\tvalidation_0-logloss:0.21612\n",
      "[1791]\tvalidation_0-logloss:0.21612\n",
      "[1792]\tvalidation_0-logloss:0.21612\n",
      "[1793]\tvalidation_0-logloss:0.21610\n",
      "[1794]\tvalidation_0-logloss:0.21610\n",
      "[1795]\tvalidation_0-logloss:0.21609\n",
      "[1796]\tvalidation_0-logloss:0.21608\n",
      "[1797]\tvalidation_0-logloss:0.21608\n",
      "[1798]\tvalidation_0-logloss:0.21608\n",
      "[1799]\tvalidation_0-logloss:0.21607\n",
      "[1800]\tvalidation_0-logloss:0.21606\n",
      "[1801]\tvalidation_0-logloss:0.21606\n",
      "[1802]\tvalidation_0-logloss:0.21606\n",
      "[1803]\tvalidation_0-logloss:0.21605\n",
      "[1804]\tvalidation_0-logloss:0.21604\n",
      "[1805]\tvalidation_0-logloss:0.21603\n",
      "[1806]\tvalidation_0-logloss:0.21603\n",
      "[1807]\tvalidation_0-logloss:0.21602\n",
      "[1808]\tvalidation_0-logloss:0.21602\n",
      "[1809]\tvalidation_0-logloss:0.21601\n",
      "[1810]\tvalidation_0-logloss:0.21601\n",
      "[1811]\tvalidation_0-logloss:0.21600\n",
      "[1812]\tvalidation_0-logloss:0.21599\n",
      "[1813]\tvalidation_0-logloss:0.21599\n",
      "[1814]\tvalidation_0-logloss:0.21598\n",
      "[1815]\tvalidation_0-logloss:0.21598\n",
      "[1816]\tvalidation_0-logloss:0.21597\n",
      "[1817]\tvalidation_0-logloss:0.21596\n",
      "[1818]\tvalidation_0-logloss:0.21596\n",
      "[1819]\tvalidation_0-logloss:0.21595\n",
      "[1820]\tvalidation_0-logloss:0.21595\n",
      "[1821]\tvalidation_0-logloss:0.21594\n",
      "[1822]\tvalidation_0-logloss:0.21594\n",
      "[1823]\tvalidation_0-logloss:0.21593\n",
      "[1824]\tvalidation_0-logloss:0.21593\n",
      "[1825]\tvalidation_0-logloss:0.21592\n",
      "[1826]\tvalidation_0-logloss:0.21591\n",
      "[1827]\tvalidation_0-logloss:0.21591\n",
      "[1828]\tvalidation_0-logloss:0.21590\n",
      "[1829]\tvalidation_0-logloss:0.21590\n",
      "[1830]\tvalidation_0-logloss:0.21589\n",
      "[1831]\tvalidation_0-logloss:0.21589\n",
      "[1832]\tvalidation_0-logloss:0.21588\n",
      "[1833]\tvalidation_0-logloss:0.21587\n",
      "[1834]\tvalidation_0-logloss:0.21587\n",
      "[1835]\tvalidation_0-logloss:0.21586\n",
      "[1836]\tvalidation_0-logloss:0.21586\n",
      "[1837]\tvalidation_0-logloss:0.21585\n",
      "[1838]\tvalidation_0-logloss:0.21585\n",
      "[1839]\tvalidation_0-logloss:0.21584\n",
      "[1840]\tvalidation_0-logloss:0.21584\n",
      "[1841]\tvalidation_0-logloss:0.21583\n",
      "[1842]\tvalidation_0-logloss:0.21582\n",
      "[1843]\tvalidation_0-logloss:0.21582\n",
      "[1844]\tvalidation_0-logloss:0.21581\n",
      "[1845]\tvalidation_0-logloss:0.21580\n",
      "[1846]\tvalidation_0-logloss:0.21580\n",
      "[1847]\tvalidation_0-logloss:0.21579\n",
      "[1848]\tvalidation_0-logloss:0.21579\n",
      "[1849]\tvalidation_0-logloss:0.21578\n",
      "[1850]\tvalidation_0-logloss:0.21578\n",
      "[1851]\tvalidation_0-logloss:0.21578\n",
      "[1852]\tvalidation_0-logloss:0.21576\n",
      "[1853]\tvalidation_0-logloss:0.21576\n",
      "[1854]\tvalidation_0-logloss:0.21575\n",
      "[1855]\tvalidation_0-logloss:0.21575\n",
      "[1856]\tvalidation_0-logloss:0.21574\n",
      "[1857]\tvalidation_0-logloss:0.21573\n",
      "[1858]\tvalidation_0-logloss:0.21573\n",
      "[1859]\tvalidation_0-logloss:0.21572\n",
      "[1860]\tvalidation_0-logloss:0.21571\n",
      "[1861]\tvalidation_0-logloss:0.21570\n",
      "[1862]\tvalidation_0-logloss:0.21569\n",
      "[1863]\tvalidation_0-logloss:0.21569\n",
      "[1864]\tvalidation_0-logloss:0.21568\n",
      "[1865]\tvalidation_0-logloss:0.21568\n",
      "[1866]\tvalidation_0-logloss:0.21567\n",
      "[1867]\tvalidation_0-logloss:0.21567\n",
      "[1868]\tvalidation_0-logloss:0.21567\n",
      "[1869]\tvalidation_0-logloss:0.21566\n",
      "[1870]\tvalidation_0-logloss:0.21566\n",
      "[1871]\tvalidation_0-logloss:0.21566\n",
      "[1872]\tvalidation_0-logloss:0.21565\n",
      "[1873]\tvalidation_0-logloss:0.21564\n",
      "[1874]\tvalidation_0-logloss:0.21563\n",
      "[1875]\tvalidation_0-logloss:0.21563\n",
      "[1876]\tvalidation_0-logloss:0.21563\n",
      "[1877]\tvalidation_0-logloss:0.21562\n",
      "[1878]\tvalidation_0-logloss:0.21561\n",
      "[1879]\tvalidation_0-logloss:0.21561\n",
      "[1880]\tvalidation_0-logloss:0.21560\n",
      "[1881]\tvalidation_0-logloss:0.21559\n",
      "[1882]\tvalidation_0-logloss:0.21559\n",
      "[1883]\tvalidation_0-logloss:0.21559\n",
      "[1884]\tvalidation_0-logloss:0.21558\n",
      "[1885]\tvalidation_0-logloss:0.21557\n",
      "[1886]\tvalidation_0-logloss:0.21557\n",
      "[1887]\tvalidation_0-logloss:0.21556\n",
      "[1888]\tvalidation_0-logloss:0.21556\n",
      "[1889]\tvalidation_0-logloss:0.21555\n",
      "[1890]\tvalidation_0-logloss:0.21555\n",
      "[1891]\tvalidation_0-logloss:0.21554\n",
      "[1892]\tvalidation_0-logloss:0.21554\n",
      "[1893]\tvalidation_0-logloss:0.21553\n",
      "[1894]\tvalidation_0-logloss:0.21553\n",
      "[1895]\tvalidation_0-logloss:0.21552\n",
      "[1896]\tvalidation_0-logloss:0.21551\n",
      "[1897]\tvalidation_0-logloss:0.21551\n",
      "[1898]\tvalidation_0-logloss:0.21551\n",
      "[1899]\tvalidation_0-logloss:0.21550\n",
      "[1900]\tvalidation_0-logloss:0.21550\n",
      "[1901]\tvalidation_0-logloss:0.21549\n",
      "[1902]\tvalidation_0-logloss:0.21549\n",
      "[1903]\tvalidation_0-logloss:0.21549\n",
      "[1904]\tvalidation_0-logloss:0.21548\n",
      "[1905]\tvalidation_0-logloss:0.21548\n",
      "[1906]\tvalidation_0-logloss:0.21547\n",
      "[1907]\tvalidation_0-logloss:0.21547\n",
      "[1908]\tvalidation_0-logloss:0.21546\n",
      "[1909]\tvalidation_0-logloss:0.21546\n",
      "[1910]\tvalidation_0-logloss:0.21545\n",
      "[1911]\tvalidation_0-logloss:0.21544\n",
      "[1912]\tvalidation_0-logloss:0.21543\n",
      "[1913]\tvalidation_0-logloss:0.21543\n",
      "[1914]\tvalidation_0-logloss:0.21542\n",
      "[1915]\tvalidation_0-logloss:0.21542\n",
      "[1916]\tvalidation_0-logloss:0.21541\n",
      "[1917]\tvalidation_0-logloss:0.21541\n",
      "[1918]\tvalidation_0-logloss:0.21540\n",
      "[1919]\tvalidation_0-logloss:0.21540\n",
      "[1920]\tvalidation_0-logloss:0.21539\n",
      "[1921]\tvalidation_0-logloss:0.21539\n",
      "[1922]\tvalidation_0-logloss:0.21539\n",
      "[1923]\tvalidation_0-logloss:0.21538\n",
      "[1924]\tvalidation_0-logloss:0.21537\n",
      "[1925]\tvalidation_0-logloss:0.21537\n",
      "[1926]\tvalidation_0-logloss:0.21537\n",
      "[1927]\tvalidation_0-logloss:0.21536\n",
      "[1928]\tvalidation_0-logloss:0.21536\n",
      "[1929]\tvalidation_0-logloss:0.21535\n",
      "[1930]\tvalidation_0-logloss:0.21534\n",
      "[1931]\tvalidation_0-logloss:0.21533\n",
      "[1932]\tvalidation_0-logloss:0.21533\n",
      "[1933]\tvalidation_0-logloss:0.21532\n",
      "[1934]\tvalidation_0-logloss:0.21532\n",
      "[1935]\tvalidation_0-logloss:0.21532\n",
      "[1936]\tvalidation_0-logloss:0.21531\n",
      "[1937]\tvalidation_0-logloss:0.21530\n",
      "[1938]\tvalidation_0-logloss:0.21530\n",
      "[1939]\tvalidation_0-logloss:0.21529\n",
      "[1940]\tvalidation_0-logloss:0.21529\n",
      "[1941]\tvalidation_0-logloss:0.21528\n",
      "[1942]\tvalidation_0-logloss:0.21528\n",
      "[1943]\tvalidation_0-logloss:0.21527\n",
      "[1944]\tvalidation_0-logloss:0.21527\n",
      "[1945]\tvalidation_0-logloss:0.21526\n",
      "[1946]\tvalidation_0-logloss:0.21525\n",
      "[1947]\tvalidation_0-logloss:0.21525\n",
      "[1948]\tvalidation_0-logloss:0.21524\n",
      "[1949]\tvalidation_0-logloss:0.21524\n",
      "[1950]\tvalidation_0-logloss:0.21523\n",
      "[1951]\tvalidation_0-logloss:0.21523\n",
      "[1952]\tvalidation_0-logloss:0.21522\n",
      "[1953]\tvalidation_0-logloss:0.21522\n",
      "[1954]\tvalidation_0-logloss:0.21521\n",
      "[1955]\tvalidation_0-logloss:0.21520\n",
      "[1956]\tvalidation_0-logloss:0.21520\n",
      "[1957]\tvalidation_0-logloss:0.21520\n",
      "[1958]\tvalidation_0-logloss:0.21519\n",
      "[1959]\tvalidation_0-logloss:0.21518\n",
      "[1960]\tvalidation_0-logloss:0.21518\n",
      "[1961]\tvalidation_0-logloss:0.21518\n",
      "[1962]\tvalidation_0-logloss:0.21517\n",
      "[1963]\tvalidation_0-logloss:0.21516\n",
      "[1964]\tvalidation_0-logloss:0.21515\n",
      "[1965]\tvalidation_0-logloss:0.21515\n",
      "[1966]\tvalidation_0-logloss:0.21515\n",
      "[1967]\tvalidation_0-logloss:0.21514\n",
      "[1968]\tvalidation_0-logloss:0.21514\n",
      "[1969]\tvalidation_0-logloss:0.21513\n",
      "[1970]\tvalidation_0-logloss:0.21513\n",
      "[1971]\tvalidation_0-logloss:0.21512\n",
      "[1972]\tvalidation_0-logloss:0.21511\n",
      "[1973]\tvalidation_0-logloss:0.21510\n",
      "[1974]\tvalidation_0-logloss:0.21510\n",
      "[1975]\tvalidation_0-logloss:0.21509\n",
      "[1976]\tvalidation_0-logloss:0.21509\n",
      "[1977]\tvalidation_0-logloss:0.21508\n",
      "[1978]\tvalidation_0-logloss:0.21508\n",
      "[1979]\tvalidation_0-logloss:0.21507\n",
      "[1980]\tvalidation_0-logloss:0.21507\n",
      "[1981]\tvalidation_0-logloss:0.21506\n",
      "[1982]\tvalidation_0-logloss:0.21506\n",
      "[1983]\tvalidation_0-logloss:0.21505\n",
      "[1984]\tvalidation_0-logloss:0.21504\n",
      "[1985]\tvalidation_0-logloss:0.21504\n",
      "[1986]\tvalidation_0-logloss:0.21503\n",
      "[1987]\tvalidation_0-logloss:0.21502\n",
      "[1988]\tvalidation_0-logloss:0.21502\n",
      "[1989]\tvalidation_0-logloss:0.21501\n",
      "[1990]\tvalidation_0-logloss:0.21501\n",
      "[1991]\tvalidation_0-logloss:0.21500\n",
      "[1992]\tvalidation_0-logloss:0.21499\n",
      "[1993]\tvalidation_0-logloss:0.21499\n",
      "[1994]\tvalidation_0-logloss:0.21498\n",
      "[1995]\tvalidation_0-logloss:0.21498\n",
      "[1996]\tvalidation_0-logloss:0.21498\n",
      "[1997]\tvalidation_0-logloss:0.21497\n",
      "[1998]\tvalidation_0-logloss:0.21496\n",
      "[1999]\tvalidation_0-logloss:0.21496\n",
      "[2000]\tvalidation_0-logloss:0.21496\n",
      "[2001]\tvalidation_0-logloss:0.21495\n",
      "[2002]\tvalidation_0-logloss:0.21495\n",
      "[2003]\tvalidation_0-logloss:0.21494\n",
      "[2004]\tvalidation_0-logloss:0.21494\n",
      "[2005]\tvalidation_0-logloss:0.21494\n",
      "[2006]\tvalidation_0-logloss:0.21493\n",
      "[2007]\tvalidation_0-logloss:0.21493\n",
      "[2008]\tvalidation_0-logloss:0.21492\n",
      "[2009]\tvalidation_0-logloss:0.21491\n",
      "[2010]\tvalidation_0-logloss:0.21491\n",
      "[2011]\tvalidation_0-logloss:0.21490\n",
      "[2012]\tvalidation_0-logloss:0.21489\n",
      "[2013]\tvalidation_0-logloss:0.21489\n",
      "[2014]\tvalidation_0-logloss:0.21489\n",
      "[2015]\tvalidation_0-logloss:0.21488\n",
      "[2016]\tvalidation_0-logloss:0.21488\n",
      "[2017]\tvalidation_0-logloss:0.21487\n",
      "[2018]\tvalidation_0-logloss:0.21487\n",
      "[2019]\tvalidation_0-logloss:0.21486\n",
      "[2020]\tvalidation_0-logloss:0.21486\n",
      "[2021]\tvalidation_0-logloss:0.21485\n",
      "[2022]\tvalidation_0-logloss:0.21485\n",
      "[2023]\tvalidation_0-logloss:0.21485\n",
      "[2024]\tvalidation_0-logloss:0.21485\n",
      "[2025]\tvalidation_0-logloss:0.21484\n",
      "[2026]\tvalidation_0-logloss:0.21484\n",
      "[2027]\tvalidation_0-logloss:0.21484\n",
      "[2028]\tvalidation_0-logloss:0.21483\n",
      "[2029]\tvalidation_0-logloss:0.21483\n",
      "[2030]\tvalidation_0-logloss:0.21482\n",
      "[2031]\tvalidation_0-logloss:0.21482\n",
      "[2032]\tvalidation_0-logloss:0.21481\n",
      "[2033]\tvalidation_0-logloss:0.21481\n",
      "[2034]\tvalidation_0-logloss:0.21481\n",
      "[2035]\tvalidation_0-logloss:0.21480\n",
      "[2036]\tvalidation_0-logloss:0.21480\n",
      "[2037]\tvalidation_0-logloss:0.21479\n",
      "[2038]\tvalidation_0-logloss:0.21479\n",
      "[2039]\tvalidation_0-logloss:0.21478\n",
      "[2040]\tvalidation_0-logloss:0.21478\n",
      "[2041]\tvalidation_0-logloss:0.21477\n",
      "[2042]\tvalidation_0-logloss:0.21476\n",
      "[2043]\tvalidation_0-logloss:0.21476\n",
      "[2044]\tvalidation_0-logloss:0.21475\n",
      "[2045]\tvalidation_0-logloss:0.21474\n",
      "[2046]\tvalidation_0-logloss:0.21474\n",
      "[2047]\tvalidation_0-logloss:0.21473\n",
      "[2048]\tvalidation_0-logloss:0.21472\n",
      "[2049]\tvalidation_0-logloss:0.21472\n",
      "[2050]\tvalidation_0-logloss:0.21472\n",
      "[2051]\tvalidation_0-logloss:0.21471\n",
      "[2052]\tvalidation_0-logloss:0.21471\n",
      "[2053]\tvalidation_0-logloss:0.21470\n",
      "[2054]\tvalidation_0-logloss:0.21469\n",
      "[2055]\tvalidation_0-logloss:0.21469\n",
      "[2056]\tvalidation_0-logloss:0.21468\n",
      "[2057]\tvalidation_0-logloss:0.21468\n",
      "[2058]\tvalidation_0-logloss:0.21467\n",
      "[2059]\tvalidation_0-logloss:0.21466\n",
      "[2060]\tvalidation_0-logloss:0.21466\n",
      "[2061]\tvalidation_0-logloss:0.21466\n",
      "[2062]\tvalidation_0-logloss:0.21465\n",
      "[2063]\tvalidation_0-logloss:0.21465\n",
      "[2064]\tvalidation_0-logloss:0.21464\n",
      "[2065]\tvalidation_0-logloss:0.21463\n",
      "[2066]\tvalidation_0-logloss:0.21463\n",
      "[2067]\tvalidation_0-logloss:0.21462\n",
      "[2068]\tvalidation_0-logloss:0.21462\n",
      "[2069]\tvalidation_0-logloss:0.21461\n",
      "[2070]\tvalidation_0-logloss:0.21461\n",
      "[2071]\tvalidation_0-logloss:0.21460\n",
      "[2072]\tvalidation_0-logloss:0.21460\n",
      "[2073]\tvalidation_0-logloss:0.21459\n",
      "[2074]\tvalidation_0-logloss:0.21459\n",
      "[2075]\tvalidation_0-logloss:0.21458\n",
      "[2076]\tvalidation_0-logloss:0.21458\n",
      "[2077]\tvalidation_0-logloss:0.21457\n",
      "[2078]\tvalidation_0-logloss:0.21456\n",
      "[2079]\tvalidation_0-logloss:0.21456\n",
      "[2080]\tvalidation_0-logloss:0.21456\n",
      "[2081]\tvalidation_0-logloss:0.21456\n",
      "[2082]\tvalidation_0-logloss:0.21455\n",
      "[2083]\tvalidation_0-logloss:0.21455\n",
      "[2084]\tvalidation_0-logloss:0.21454\n",
      "[2085]\tvalidation_0-logloss:0.21454\n",
      "[2086]\tvalidation_0-logloss:0.21454\n",
      "[2087]\tvalidation_0-logloss:0.21453\n",
      "[2088]\tvalidation_0-logloss:0.21453\n",
      "[2089]\tvalidation_0-logloss:0.21452\n",
      "[2090]\tvalidation_0-logloss:0.21452\n",
      "[2091]\tvalidation_0-logloss:0.21451\n",
      "[2092]\tvalidation_0-logloss:0.21451\n",
      "[2093]\tvalidation_0-logloss:0.21450\n",
      "[2094]\tvalidation_0-logloss:0.21450\n",
      "[2095]\tvalidation_0-logloss:0.21450\n",
      "[2096]\tvalidation_0-logloss:0.21449\n",
      "[2097]\tvalidation_0-logloss:0.21449\n",
      "[2098]\tvalidation_0-logloss:0.21448\n",
      "[2099]\tvalidation_0-logloss:0.21447\n",
      "[2100]\tvalidation_0-logloss:0.21447\n",
      "[2101]\tvalidation_0-logloss:0.21447\n",
      "[2102]\tvalidation_0-logloss:0.21446\n",
      "[2103]\tvalidation_0-logloss:0.21446\n",
      "[2104]\tvalidation_0-logloss:0.21445\n",
      "[2105]\tvalidation_0-logloss:0.21445\n",
      "[2106]\tvalidation_0-logloss:0.21445\n",
      "[2107]\tvalidation_0-logloss:0.21445\n",
      "[2108]\tvalidation_0-logloss:0.21444\n",
      "[2109]\tvalidation_0-logloss:0.21444\n",
      "[2110]\tvalidation_0-logloss:0.21443\n",
      "[2111]\tvalidation_0-logloss:0.21443\n",
      "[2112]\tvalidation_0-logloss:0.21442\n",
      "[2113]\tvalidation_0-logloss:0.21442\n",
      "[2114]\tvalidation_0-logloss:0.21442\n",
      "[2115]\tvalidation_0-logloss:0.21441\n",
      "[2116]\tvalidation_0-logloss:0.21441\n",
      "[2117]\tvalidation_0-logloss:0.21441\n",
      "[2118]\tvalidation_0-logloss:0.21441\n",
      "[2119]\tvalidation_0-logloss:0.21440\n",
      "[2120]\tvalidation_0-logloss:0.21440\n",
      "[2121]\tvalidation_0-logloss:0.21439\n",
      "[2122]\tvalidation_0-logloss:0.21439\n",
      "[2123]\tvalidation_0-logloss:0.21438\n",
      "[2124]\tvalidation_0-logloss:0.21437\n",
      "[2125]\tvalidation_0-logloss:0.21437\n",
      "[2126]\tvalidation_0-logloss:0.21436\n",
      "[2127]\tvalidation_0-logloss:0.21435\n",
      "[2128]\tvalidation_0-logloss:0.21435\n",
      "[2129]\tvalidation_0-logloss:0.21435\n",
      "[2130]\tvalidation_0-logloss:0.21434\n",
      "[2131]\tvalidation_0-logloss:0.21434\n",
      "[2132]\tvalidation_0-logloss:0.21433\n",
      "[2133]\tvalidation_0-logloss:0.21433\n",
      "[2134]\tvalidation_0-logloss:0.21432\n",
      "[2135]\tvalidation_0-logloss:0.21432\n",
      "[2136]\tvalidation_0-logloss:0.21432\n",
      "[2137]\tvalidation_0-logloss:0.21431\n",
      "[2138]\tvalidation_0-logloss:0.21431\n",
      "[2139]\tvalidation_0-logloss:0.21431\n",
      "[2140]\tvalidation_0-logloss:0.21430\n",
      "[2141]\tvalidation_0-logloss:0.21430\n",
      "[2142]\tvalidation_0-logloss:0.21429\n",
      "[2143]\tvalidation_0-logloss:0.21429\n",
      "[2144]\tvalidation_0-logloss:0.21428\n",
      "[2145]\tvalidation_0-logloss:0.21427\n",
      "[2146]\tvalidation_0-logloss:0.21427\n",
      "[2147]\tvalidation_0-logloss:0.21426\n",
      "[2148]\tvalidation_0-logloss:0.21425\n",
      "[2149]\tvalidation_0-logloss:0.21425\n",
      "[2150]\tvalidation_0-logloss:0.21424\n",
      "[2151]\tvalidation_0-logloss:0.21424\n",
      "[2152]\tvalidation_0-logloss:0.21423\n",
      "[2153]\tvalidation_0-logloss:0.21423\n",
      "[2154]\tvalidation_0-logloss:0.21422\n",
      "[2155]\tvalidation_0-logloss:0.21421\n",
      "[2156]\tvalidation_0-logloss:0.21421\n",
      "[2157]\tvalidation_0-logloss:0.21420\n",
      "[2158]\tvalidation_0-logloss:0.21420\n",
      "[2159]\tvalidation_0-logloss:0.21419\n",
      "[2160]\tvalidation_0-logloss:0.21419\n",
      "[2161]\tvalidation_0-logloss:0.21418\n",
      "[2162]\tvalidation_0-logloss:0.21418\n",
      "[2163]\tvalidation_0-logloss:0.21417\n",
      "[2164]\tvalidation_0-logloss:0.21417\n",
      "[2165]\tvalidation_0-logloss:0.21417\n",
      "[2166]\tvalidation_0-logloss:0.21416\n",
      "[2167]\tvalidation_0-logloss:0.21415\n",
      "[2168]\tvalidation_0-logloss:0.21414\n",
      "[2169]\tvalidation_0-logloss:0.21414\n",
      "[2170]\tvalidation_0-logloss:0.21414\n",
      "[2171]\tvalidation_0-logloss:0.21413\n",
      "[2172]\tvalidation_0-logloss:0.21413\n",
      "[2173]\tvalidation_0-logloss:0.21412\n",
      "[2174]\tvalidation_0-logloss:0.21412\n",
      "[2175]\tvalidation_0-logloss:0.21411\n",
      "[2176]\tvalidation_0-logloss:0.21410\n",
      "[2177]\tvalidation_0-logloss:0.21410\n",
      "[2178]\tvalidation_0-logloss:0.21409\n",
      "[2179]\tvalidation_0-logloss:0.21409\n",
      "[2180]\tvalidation_0-logloss:0.21408\n",
      "[2181]\tvalidation_0-logloss:0.21407\n",
      "[2182]\tvalidation_0-logloss:0.21407\n",
      "[2183]\tvalidation_0-logloss:0.21407\n",
      "[2184]\tvalidation_0-logloss:0.21406\n",
      "[2185]\tvalidation_0-logloss:0.21406\n",
      "[2186]\tvalidation_0-logloss:0.21405\n",
      "[2187]\tvalidation_0-logloss:0.21405\n",
      "[2188]\tvalidation_0-logloss:0.21405\n",
      "[2189]\tvalidation_0-logloss:0.21404\n",
      "[2190]\tvalidation_0-logloss:0.21403\n",
      "[2191]\tvalidation_0-logloss:0.21403\n",
      "[2192]\tvalidation_0-logloss:0.21403\n",
      "[2193]\tvalidation_0-logloss:0.21402\n",
      "[2194]\tvalidation_0-logloss:0.21401\n",
      "[2195]\tvalidation_0-logloss:0.21401\n",
      "[2196]\tvalidation_0-logloss:0.21400\n",
      "[2197]\tvalidation_0-logloss:0.21399\n",
      "[2198]\tvalidation_0-logloss:0.21399\n",
      "[2199]\tvalidation_0-logloss:0.21398\n",
      "[2200]\tvalidation_0-logloss:0.21398\n",
      "[2201]\tvalidation_0-logloss:0.21397\n",
      "[2202]\tvalidation_0-logloss:0.21397\n",
      "[2203]\tvalidation_0-logloss:0.21396\n",
      "[2204]\tvalidation_0-logloss:0.21396\n",
      "[2205]\tvalidation_0-logloss:0.21395\n",
      "[2206]\tvalidation_0-logloss:0.21395\n",
      "[2207]\tvalidation_0-logloss:0.21394\n",
      "[2208]\tvalidation_0-logloss:0.21394\n",
      "[2209]\tvalidation_0-logloss:0.21393\n",
      "[2210]\tvalidation_0-logloss:0.21393\n",
      "[2211]\tvalidation_0-logloss:0.21393\n",
      "[2212]\tvalidation_0-logloss:0.21392\n",
      "[2213]\tvalidation_0-logloss:0.21392\n",
      "[2214]\tvalidation_0-logloss:0.21391\n",
      "[2215]\tvalidation_0-logloss:0.21391\n",
      "[2216]\tvalidation_0-logloss:0.21390\n",
      "[2217]\tvalidation_0-logloss:0.21390\n",
      "[2218]\tvalidation_0-logloss:0.21389\n",
      "[2219]\tvalidation_0-logloss:0.21389\n",
      "[2220]\tvalidation_0-logloss:0.21389\n",
      "[2221]\tvalidation_0-logloss:0.21388\n",
      "[2222]\tvalidation_0-logloss:0.21388\n",
      "[2223]\tvalidation_0-logloss:0.21387\n",
      "[2224]\tvalidation_0-logloss:0.21387\n",
      "[2225]\tvalidation_0-logloss:0.21386\n",
      "[2226]\tvalidation_0-logloss:0.21386\n",
      "[2227]\tvalidation_0-logloss:0.21385\n",
      "[2228]\tvalidation_0-logloss:0.21385\n",
      "[2229]\tvalidation_0-logloss:0.21384\n",
      "[2230]\tvalidation_0-logloss:0.21384\n",
      "[2231]\tvalidation_0-logloss:0.21384\n",
      "[2232]\tvalidation_0-logloss:0.21383\n",
      "[2233]\tvalidation_0-logloss:0.21383\n",
      "[2234]\tvalidation_0-logloss:0.21383\n",
      "[2235]\tvalidation_0-logloss:0.21382\n",
      "[2236]\tvalidation_0-logloss:0.21381\n",
      "[2237]\tvalidation_0-logloss:0.21381\n",
      "[2238]\tvalidation_0-logloss:0.21381\n",
      "[2239]\tvalidation_0-logloss:0.21380\n",
      "[2240]\tvalidation_0-logloss:0.21380\n",
      "[2241]\tvalidation_0-logloss:0.21380\n",
      "[2242]\tvalidation_0-logloss:0.21379\n",
      "[2243]\tvalidation_0-logloss:0.21379\n",
      "[2244]\tvalidation_0-logloss:0.21379\n",
      "[2245]\tvalidation_0-logloss:0.21378\n",
      "[2246]\tvalidation_0-logloss:0.21378\n",
      "[2247]\tvalidation_0-logloss:0.21378\n",
      "[2248]\tvalidation_0-logloss:0.21377\n",
      "[2249]\tvalidation_0-logloss:0.21377\n",
      "[2250]\tvalidation_0-logloss:0.21377\n",
      "[2251]\tvalidation_0-logloss:0.21376\n",
      "[2252]\tvalidation_0-logloss:0.21375\n",
      "[2253]\tvalidation_0-logloss:0.21375\n",
      "[2254]\tvalidation_0-logloss:0.21375\n",
      "[2255]\tvalidation_0-logloss:0.21374\n",
      "[2256]\tvalidation_0-logloss:0.21373\n",
      "[2257]\tvalidation_0-logloss:0.21373\n",
      "[2258]\tvalidation_0-logloss:0.21372\n",
      "[2259]\tvalidation_0-logloss:0.21372\n",
      "[2260]\tvalidation_0-logloss:0.21372\n",
      "[2261]\tvalidation_0-logloss:0.21371\n",
      "[2262]\tvalidation_0-logloss:0.21371\n",
      "[2263]\tvalidation_0-logloss:0.21370\n",
      "[2264]\tvalidation_0-logloss:0.21369\n",
      "[2265]\tvalidation_0-logloss:0.21369\n",
      "[2266]\tvalidation_0-logloss:0.21369\n",
      "[2267]\tvalidation_0-logloss:0.21368\n",
      "[2268]\tvalidation_0-logloss:0.21367\n",
      "[2269]\tvalidation_0-logloss:0.21367\n",
      "[2270]\tvalidation_0-logloss:0.21367\n",
      "[2271]\tvalidation_0-logloss:0.21367\n",
      "[2272]\tvalidation_0-logloss:0.21366\n",
      "[2273]\tvalidation_0-logloss:0.21366\n",
      "[2274]\tvalidation_0-logloss:0.21365\n",
      "[2275]\tvalidation_0-logloss:0.21365\n",
      "[2276]\tvalidation_0-logloss:0.21364\n",
      "[2277]\tvalidation_0-logloss:0.21364\n",
      "[2278]\tvalidation_0-logloss:0.21363\n",
      "[2279]\tvalidation_0-logloss:0.21362\n",
      "[2280]\tvalidation_0-logloss:0.21362\n",
      "[2281]\tvalidation_0-logloss:0.21362\n",
      "[2282]\tvalidation_0-logloss:0.21361\n",
      "[2283]\tvalidation_0-logloss:0.21361\n",
      "[2284]\tvalidation_0-logloss:0.21361\n",
      "[2285]\tvalidation_0-logloss:0.21361\n",
      "[2286]\tvalidation_0-logloss:0.21360\n",
      "[2287]\tvalidation_0-logloss:0.21360\n",
      "[2288]\tvalidation_0-logloss:0.21359\n",
      "[2289]\tvalidation_0-logloss:0.21359\n",
      "[2290]\tvalidation_0-logloss:0.21358\n",
      "[2291]\tvalidation_0-logloss:0.21358\n",
      "[2292]\tvalidation_0-logloss:0.21357\n",
      "[2293]\tvalidation_0-logloss:0.21357\n",
      "[2294]\tvalidation_0-logloss:0.21356\n",
      "[2295]\tvalidation_0-logloss:0.21356\n",
      "[2296]\tvalidation_0-logloss:0.21356\n",
      "[2297]\tvalidation_0-logloss:0.21355\n",
      "[2298]\tvalidation_0-logloss:0.21355\n",
      "[2299]\tvalidation_0-logloss:0.21354\n",
      "[2300]\tvalidation_0-logloss:0.21354\n",
      "[2301]\tvalidation_0-logloss:0.21353\n",
      "[2302]\tvalidation_0-logloss:0.21352\n",
      "[2303]\tvalidation_0-logloss:0.21352\n",
      "[2304]\tvalidation_0-logloss:0.21351\n",
      "[2305]\tvalidation_0-logloss:0.21351\n",
      "[2306]\tvalidation_0-logloss:0.21350\n",
      "[2307]\tvalidation_0-logloss:0.21350\n",
      "[2308]\tvalidation_0-logloss:0.21349\n",
      "[2309]\tvalidation_0-logloss:0.21349\n",
      "[2310]\tvalidation_0-logloss:0.21349\n",
      "[2311]\tvalidation_0-logloss:0.21348\n",
      "[2312]\tvalidation_0-logloss:0.21347\n",
      "[2313]\tvalidation_0-logloss:0.21347\n",
      "[2314]\tvalidation_0-logloss:0.21347\n",
      "[2315]\tvalidation_0-logloss:0.21346\n",
      "[2316]\tvalidation_0-logloss:0.21345\n",
      "[2317]\tvalidation_0-logloss:0.21344\n",
      "[2318]\tvalidation_0-logloss:0.21343\n",
      "[2319]\tvalidation_0-logloss:0.21343\n",
      "[2320]\tvalidation_0-logloss:0.21342\n",
      "[2321]\tvalidation_0-logloss:0.21342\n",
      "[2322]\tvalidation_0-logloss:0.21341\n",
      "[2323]\tvalidation_0-logloss:0.21341\n",
      "[2324]\tvalidation_0-logloss:0.21340\n",
      "[2325]\tvalidation_0-logloss:0.21340\n",
      "[2326]\tvalidation_0-logloss:0.21339\n",
      "[2327]\tvalidation_0-logloss:0.21338\n",
      "[2328]\tvalidation_0-logloss:0.21338\n",
      "[2329]\tvalidation_0-logloss:0.21338\n",
      "[2330]\tvalidation_0-logloss:0.21337\n",
      "[2331]\tvalidation_0-logloss:0.21337\n",
      "[2332]\tvalidation_0-logloss:0.21337\n",
      "[2333]\tvalidation_0-logloss:0.21336\n",
      "[2334]\tvalidation_0-logloss:0.21336\n",
      "[2335]\tvalidation_0-logloss:0.21335\n",
      "[2336]\tvalidation_0-logloss:0.21335\n",
      "[2337]\tvalidation_0-logloss:0.21334\n",
      "[2338]\tvalidation_0-logloss:0.21334\n",
      "[2339]\tvalidation_0-logloss:0.21333\n",
      "[2340]\tvalidation_0-logloss:0.21333\n",
      "[2341]\tvalidation_0-logloss:0.21333\n",
      "[2342]\tvalidation_0-logloss:0.21332\n",
      "[2343]\tvalidation_0-logloss:0.21332\n",
      "[2344]\tvalidation_0-logloss:0.21331\n",
      "[2345]\tvalidation_0-logloss:0.21330\n",
      "[2346]\tvalidation_0-logloss:0.21330\n",
      "[2347]\tvalidation_0-logloss:0.21330\n",
      "[2348]\tvalidation_0-logloss:0.21329\n",
      "[2349]\tvalidation_0-logloss:0.21328\n",
      "[2350]\tvalidation_0-logloss:0.21328\n",
      "[2351]\tvalidation_0-logloss:0.21327\n",
      "[2352]\tvalidation_0-logloss:0.21327\n",
      "[2353]\tvalidation_0-logloss:0.21327\n",
      "[2354]\tvalidation_0-logloss:0.21326\n",
      "[2355]\tvalidation_0-logloss:0.21326\n",
      "[2356]\tvalidation_0-logloss:0.21325\n",
      "[2357]\tvalidation_0-logloss:0.21325\n",
      "[2358]\tvalidation_0-logloss:0.21324\n",
      "[2359]\tvalidation_0-logloss:0.21324\n",
      "[2360]\tvalidation_0-logloss:0.21323\n",
      "[2361]\tvalidation_0-logloss:0.21323\n",
      "[2362]\tvalidation_0-logloss:0.21322\n",
      "[2363]\tvalidation_0-logloss:0.21322\n",
      "[2364]\tvalidation_0-logloss:0.21321\n",
      "[2365]\tvalidation_0-logloss:0.21321\n",
      "[2366]\tvalidation_0-logloss:0.21320\n",
      "[2367]\tvalidation_0-logloss:0.21320\n",
      "[2368]\tvalidation_0-logloss:0.21319\n",
      "[2369]\tvalidation_0-logloss:0.21319\n",
      "[2370]\tvalidation_0-logloss:0.21318\n",
      "[2371]\tvalidation_0-logloss:0.21317\n",
      "[2372]\tvalidation_0-logloss:0.21317\n",
      "[2373]\tvalidation_0-logloss:0.21317\n",
      "[2374]\tvalidation_0-logloss:0.21316\n",
      "[2375]\tvalidation_0-logloss:0.21316\n",
      "[2376]\tvalidation_0-logloss:0.21315\n",
      "[2377]\tvalidation_0-logloss:0.21315\n",
      "[2378]\tvalidation_0-logloss:0.21314\n",
      "[2379]\tvalidation_0-logloss:0.21314\n",
      "[2380]\tvalidation_0-logloss:0.21313\n",
      "[2381]\tvalidation_0-logloss:0.21313\n",
      "[2382]\tvalidation_0-logloss:0.21312\n",
      "[2383]\tvalidation_0-logloss:0.21312\n",
      "[2384]\tvalidation_0-logloss:0.21311\n",
      "[2385]\tvalidation_0-logloss:0.21311\n",
      "[2386]\tvalidation_0-logloss:0.21311\n",
      "[2387]\tvalidation_0-logloss:0.21310\n",
      "[2388]\tvalidation_0-logloss:0.21309\n",
      "[2389]\tvalidation_0-logloss:0.21309\n",
      "[2390]\tvalidation_0-logloss:0.21309\n",
      "[2391]\tvalidation_0-logloss:0.21308\n",
      "[2392]\tvalidation_0-logloss:0.21308\n",
      "[2393]\tvalidation_0-logloss:0.21307\n",
      "[2394]\tvalidation_0-logloss:0.21307\n",
      "[2395]\tvalidation_0-logloss:0.21307\n",
      "[2396]\tvalidation_0-logloss:0.21306\n",
      "[2397]\tvalidation_0-logloss:0.21306\n",
      "[2398]\tvalidation_0-logloss:0.21305\n",
      "[2399]\tvalidation_0-logloss:0.21304\n",
      "[2400]\tvalidation_0-logloss:0.21304\n",
      "[2401]\tvalidation_0-logloss:0.21304\n",
      "[2402]\tvalidation_0-logloss:0.21303\n",
      "[2403]\tvalidation_0-logloss:0.21303\n",
      "[2404]\tvalidation_0-logloss:0.21302\n",
      "[2405]\tvalidation_0-logloss:0.21302\n",
      "[2406]\tvalidation_0-logloss:0.21301\n",
      "[2407]\tvalidation_0-logloss:0.21301\n",
      "[2408]\tvalidation_0-logloss:0.21300\n",
      "[2409]\tvalidation_0-logloss:0.21300\n",
      "[2410]\tvalidation_0-logloss:0.21299\n",
      "[2411]\tvalidation_0-logloss:0.21299\n",
      "[2412]\tvalidation_0-logloss:0.21299\n",
      "[2413]\tvalidation_0-logloss:0.21298\n",
      "[2414]\tvalidation_0-logloss:0.21298\n",
      "[2415]\tvalidation_0-logloss:0.21297\n",
      "[2416]\tvalidation_0-logloss:0.21297\n",
      "[2417]\tvalidation_0-logloss:0.21296\n",
      "[2418]\tvalidation_0-logloss:0.21296\n",
      "[2419]\tvalidation_0-logloss:0.21296\n",
      "[2420]\tvalidation_0-logloss:0.21296\n",
      "[2421]\tvalidation_0-logloss:0.21295\n",
      "[2422]\tvalidation_0-logloss:0.21295\n",
      "[2423]\tvalidation_0-logloss:0.21294\n",
      "[2424]\tvalidation_0-logloss:0.21294\n",
      "[2425]\tvalidation_0-logloss:0.21293\n",
      "[2426]\tvalidation_0-logloss:0.21293\n",
      "[2427]\tvalidation_0-logloss:0.21293\n",
      "[2428]\tvalidation_0-logloss:0.21293\n",
      "[2429]\tvalidation_0-logloss:0.21292\n",
      "[2430]\tvalidation_0-logloss:0.21292\n",
      "[2431]\tvalidation_0-logloss:0.21291\n",
      "[2432]\tvalidation_0-logloss:0.21291\n",
      "[2433]\tvalidation_0-logloss:0.21291\n",
      "[2434]\tvalidation_0-logloss:0.21290\n",
      "[2435]\tvalidation_0-logloss:0.21290\n",
      "[2436]\tvalidation_0-logloss:0.21289\n",
      "[2437]\tvalidation_0-logloss:0.21289\n",
      "[2438]\tvalidation_0-logloss:0.21288\n",
      "[2439]\tvalidation_0-logloss:0.21288\n",
      "[2440]\tvalidation_0-logloss:0.21287\n",
      "[2441]\tvalidation_0-logloss:0.21287\n",
      "[2442]\tvalidation_0-logloss:0.21287\n",
      "[2443]\tvalidation_0-logloss:0.21286\n",
      "[2444]\tvalidation_0-logloss:0.21285\n",
      "[2445]\tvalidation_0-logloss:0.21285\n",
      "[2446]\tvalidation_0-logloss:0.21285\n",
      "[2447]\tvalidation_0-logloss:0.21284\n",
      "[2448]\tvalidation_0-logloss:0.21284\n",
      "[2449]\tvalidation_0-logloss:0.21283\n",
      "[2450]\tvalidation_0-logloss:0.21283\n",
      "[2451]\tvalidation_0-logloss:0.21282\n",
      "[2452]\tvalidation_0-logloss:0.21282\n",
      "[2453]\tvalidation_0-logloss:0.21281\n",
      "[2454]\tvalidation_0-logloss:0.21281\n",
      "[2455]\tvalidation_0-logloss:0.21280\n",
      "[2456]\tvalidation_0-logloss:0.21280\n",
      "[2457]\tvalidation_0-logloss:0.21279\n",
      "[2458]\tvalidation_0-logloss:0.21279\n",
      "[2459]\tvalidation_0-logloss:0.21279\n",
      "[2460]\tvalidation_0-logloss:0.21278\n",
      "[2461]\tvalidation_0-logloss:0.21278\n",
      "[2462]\tvalidation_0-logloss:0.21277\n",
      "[2463]\tvalidation_0-logloss:0.21277\n",
      "[2464]\tvalidation_0-logloss:0.21276\n",
      "[2465]\tvalidation_0-logloss:0.21276\n",
      "[2466]\tvalidation_0-logloss:0.21275\n",
      "[2467]\tvalidation_0-logloss:0.21275\n",
      "[2468]\tvalidation_0-logloss:0.21274\n",
      "[2469]\tvalidation_0-logloss:0.21274\n",
      "[2470]\tvalidation_0-logloss:0.21273\n",
      "[2471]\tvalidation_0-logloss:0.21273\n",
      "[2472]\tvalidation_0-logloss:0.21272\n",
      "[2473]\tvalidation_0-logloss:0.21272\n",
      "[2474]\tvalidation_0-logloss:0.21271\n",
      "[2475]\tvalidation_0-logloss:0.21271\n",
      "[2476]\tvalidation_0-logloss:0.21270\n",
      "[2477]\tvalidation_0-logloss:0.21270\n",
      "[2478]\tvalidation_0-logloss:0.21269\n",
      "[2479]\tvalidation_0-logloss:0.21269\n",
      "[2480]\tvalidation_0-logloss:0.21268\n",
      "[2481]\tvalidation_0-logloss:0.21268\n",
      "[2482]\tvalidation_0-logloss:0.21267\n",
      "[2483]\tvalidation_0-logloss:0.21267\n",
      "[2484]\tvalidation_0-logloss:0.21266\n",
      "[2485]\tvalidation_0-logloss:0.21266\n",
      "[2486]\tvalidation_0-logloss:0.21265\n",
      "[2487]\tvalidation_0-logloss:0.21265\n",
      "[2488]\tvalidation_0-logloss:0.21264\n",
      "[2489]\tvalidation_0-logloss:0.21264\n",
      "[2490]\tvalidation_0-logloss:0.21264\n",
      "[2491]\tvalidation_0-logloss:0.21263\n",
      "[2492]\tvalidation_0-logloss:0.21263\n",
      "[2493]\tvalidation_0-logloss:0.21262\n",
      "[2494]\tvalidation_0-logloss:0.21262\n",
      "[2495]\tvalidation_0-logloss:0.21262\n",
      "[2496]\tvalidation_0-logloss:0.21261\n",
      "[2497]\tvalidation_0-logloss:0.21261\n",
      "[2498]\tvalidation_0-logloss:0.21260\n",
      "[2499]\tvalidation_0-logloss:0.21260\n",
      "[2500]\tvalidation_0-logloss:0.21260\n",
      "[2501]\tvalidation_0-logloss:0.21259\n",
      "[2502]\tvalidation_0-logloss:0.21259\n",
      "[2503]\tvalidation_0-logloss:0.21258\n",
      "[2504]\tvalidation_0-logloss:0.21258\n",
      "[2505]\tvalidation_0-logloss:0.21257\n",
      "[2506]\tvalidation_0-logloss:0.21257\n",
      "[2507]\tvalidation_0-logloss:0.21257\n",
      "[2508]\tvalidation_0-logloss:0.21256\n",
      "[2509]\tvalidation_0-logloss:0.21256\n",
      "[2510]\tvalidation_0-logloss:0.21255\n",
      "[2511]\tvalidation_0-logloss:0.21255\n",
      "[2512]\tvalidation_0-logloss:0.21255\n",
      "[2513]\tvalidation_0-logloss:0.21254\n",
      "[2514]\tvalidation_0-logloss:0.21254\n",
      "[2515]\tvalidation_0-logloss:0.21253\n",
      "[2516]\tvalidation_0-logloss:0.21252\n",
      "[2517]\tvalidation_0-logloss:0.21252\n",
      "[2518]\tvalidation_0-logloss:0.21251\n",
      "[2519]\tvalidation_0-logloss:0.21251\n",
      "[2520]\tvalidation_0-logloss:0.21251\n",
      "[2521]\tvalidation_0-logloss:0.21250\n",
      "[2522]\tvalidation_0-logloss:0.21250\n",
      "[2523]\tvalidation_0-logloss:0.21249\n",
      "[2524]\tvalidation_0-logloss:0.21249\n",
      "[2525]\tvalidation_0-logloss:0.21248\n",
      "[2526]\tvalidation_0-logloss:0.21248\n",
      "[2527]\tvalidation_0-logloss:0.21247\n",
      "[2528]\tvalidation_0-logloss:0.21246\n",
      "[2529]\tvalidation_0-logloss:0.21246\n",
      "[2530]\tvalidation_0-logloss:0.21246\n",
      "[2531]\tvalidation_0-logloss:0.21245\n",
      "[2532]\tvalidation_0-logloss:0.21244\n",
      "[2533]\tvalidation_0-logloss:0.21244\n",
      "[2534]\tvalidation_0-logloss:0.21243\n",
      "[2535]\tvalidation_0-logloss:0.21243\n",
      "[2536]\tvalidation_0-logloss:0.21242\n",
      "[2537]\tvalidation_0-logloss:0.21242\n",
      "[2538]\tvalidation_0-logloss:0.21241\n",
      "[2539]\tvalidation_0-logloss:0.21240\n",
      "[2540]\tvalidation_0-logloss:0.21240\n",
      "[2541]\tvalidation_0-logloss:0.21239\n",
      "[2542]\tvalidation_0-logloss:0.21239\n",
      "[2543]\tvalidation_0-logloss:0.21238\n",
      "[2544]\tvalidation_0-logloss:0.21238\n",
      "[2545]\tvalidation_0-logloss:0.21237\n",
      "[2546]\tvalidation_0-logloss:0.21236\n",
      "[2547]\tvalidation_0-logloss:0.21236\n",
      "[2548]\tvalidation_0-logloss:0.21236\n",
      "[2549]\tvalidation_0-logloss:0.21235\n",
      "[2550]\tvalidation_0-logloss:0.21235\n",
      "[2551]\tvalidation_0-logloss:0.21234\n",
      "[2552]\tvalidation_0-logloss:0.21234\n",
      "[2553]\tvalidation_0-logloss:0.21234\n",
      "[2554]\tvalidation_0-logloss:0.21233\n",
      "[2555]\tvalidation_0-logloss:0.21233\n",
      "[2556]\tvalidation_0-logloss:0.21232\n",
      "[2557]\tvalidation_0-logloss:0.21232\n",
      "[2558]\tvalidation_0-logloss:0.21231\n",
      "[2559]\tvalidation_0-logloss:0.21231\n",
      "[2560]\tvalidation_0-logloss:0.21231\n",
      "[2561]\tvalidation_0-logloss:0.21230\n",
      "[2562]\tvalidation_0-logloss:0.21230\n",
      "[2563]\tvalidation_0-logloss:0.21229\n",
      "[2564]\tvalidation_0-logloss:0.21228\n",
      "[2565]\tvalidation_0-logloss:0.21228\n",
      "[2566]\tvalidation_0-logloss:0.21227\n",
      "[2567]\tvalidation_0-logloss:0.21227\n",
      "[2568]\tvalidation_0-logloss:0.21226\n",
      "[2569]\tvalidation_0-logloss:0.21226\n",
      "[2570]\tvalidation_0-logloss:0.21225\n",
      "[2571]\tvalidation_0-logloss:0.21225\n",
      "[2572]\tvalidation_0-logloss:0.21225\n",
      "[2573]\tvalidation_0-logloss:0.21225\n",
      "[2574]\tvalidation_0-logloss:0.21224\n",
      "[2575]\tvalidation_0-logloss:0.21224\n",
      "[2576]\tvalidation_0-logloss:0.21223\n",
      "[2577]\tvalidation_0-logloss:0.21223\n",
      "[2578]\tvalidation_0-logloss:0.21222\n",
      "[2579]\tvalidation_0-logloss:0.21221\n",
      "[2580]\tvalidation_0-logloss:0.21221\n",
      "[2581]\tvalidation_0-logloss:0.21221\n",
      "[2582]\tvalidation_0-logloss:0.21220\n",
      "[2583]\tvalidation_0-logloss:0.21220\n",
      "[2584]\tvalidation_0-logloss:0.21219\n",
      "[2585]\tvalidation_0-logloss:0.21218\n",
      "[2586]\tvalidation_0-logloss:0.21218\n",
      "[2587]\tvalidation_0-logloss:0.21217\n",
      "[2588]\tvalidation_0-logloss:0.21217\n",
      "[2589]\tvalidation_0-logloss:0.21216\n",
      "[2590]\tvalidation_0-logloss:0.21216\n",
      "[2591]\tvalidation_0-logloss:0.21215\n",
      "[2592]\tvalidation_0-logloss:0.21215\n",
      "[2593]\tvalidation_0-logloss:0.21214\n",
      "[2594]\tvalidation_0-logloss:0.21214\n",
      "[2595]\tvalidation_0-logloss:0.21213\n",
      "[2596]\tvalidation_0-logloss:0.21213\n",
      "[2597]\tvalidation_0-logloss:0.21212\n",
      "[2598]\tvalidation_0-logloss:0.21212\n",
      "[2599]\tvalidation_0-logloss:0.21211\n",
      "[2600]\tvalidation_0-logloss:0.21211\n",
      "[2601]\tvalidation_0-logloss:0.21211\n",
      "[2602]\tvalidation_0-logloss:0.21210\n",
      "[2603]\tvalidation_0-logloss:0.21210\n",
      "[2604]\tvalidation_0-logloss:0.21209\n",
      "[2605]\tvalidation_0-logloss:0.21209\n",
      "[2606]\tvalidation_0-logloss:0.21208\n",
      "[2607]\tvalidation_0-logloss:0.21208\n",
      "[2608]\tvalidation_0-logloss:0.21207\n",
      "[2609]\tvalidation_0-logloss:0.21207\n",
      "[2610]\tvalidation_0-logloss:0.21207\n",
      "[2611]\tvalidation_0-logloss:0.21206\n",
      "[2612]\tvalidation_0-logloss:0.21206\n",
      "[2613]\tvalidation_0-logloss:0.21206\n",
      "[2614]\tvalidation_0-logloss:0.21206\n",
      "[2615]\tvalidation_0-logloss:0.21205\n",
      "[2616]\tvalidation_0-logloss:0.21205\n",
      "[2617]\tvalidation_0-logloss:0.21204\n",
      "[2618]\tvalidation_0-logloss:0.21204\n",
      "[2619]\tvalidation_0-logloss:0.21203\n",
      "[2620]\tvalidation_0-logloss:0.21203\n",
      "[2621]\tvalidation_0-logloss:0.21203\n",
      "[2622]\tvalidation_0-logloss:0.21202\n",
      "[2623]\tvalidation_0-logloss:0.21202\n",
      "[2624]\tvalidation_0-logloss:0.21201\n",
      "[2625]\tvalidation_0-logloss:0.21201\n",
      "[2626]\tvalidation_0-logloss:0.21200\n",
      "[2627]\tvalidation_0-logloss:0.21200\n",
      "[2628]\tvalidation_0-logloss:0.21199\n",
      "[2629]\tvalidation_0-logloss:0.21199\n",
      "[2630]\tvalidation_0-logloss:0.21198\n",
      "[2631]\tvalidation_0-logloss:0.21198\n",
      "[2632]\tvalidation_0-logloss:0.21198\n",
      "[2633]\tvalidation_0-logloss:0.21198\n",
      "[2634]\tvalidation_0-logloss:0.21198\n",
      "[2635]\tvalidation_0-logloss:0.21197\n",
      "[2636]\tvalidation_0-logloss:0.21197\n",
      "[2637]\tvalidation_0-logloss:0.21196\n",
      "[2638]\tvalidation_0-logloss:0.21196\n",
      "[2639]\tvalidation_0-logloss:0.21195\n",
      "[2640]\tvalidation_0-logloss:0.21195\n",
      "[2641]\tvalidation_0-logloss:0.21194\n",
      "[2642]\tvalidation_0-logloss:0.21194\n",
      "[2643]\tvalidation_0-logloss:0.21193\n",
      "[2644]\tvalidation_0-logloss:0.21193\n",
      "[2645]\tvalidation_0-logloss:0.21192\n",
      "[2646]\tvalidation_0-logloss:0.21192\n",
      "[2647]\tvalidation_0-logloss:0.21192\n",
      "[2648]\tvalidation_0-logloss:0.21191\n",
      "[2649]\tvalidation_0-logloss:0.21191\n",
      "[2650]\tvalidation_0-logloss:0.21190\n",
      "[2651]\tvalidation_0-logloss:0.21190\n",
      "[2652]\tvalidation_0-logloss:0.21190\n",
      "[2653]\tvalidation_0-logloss:0.21189\n",
      "[2654]\tvalidation_0-logloss:0.21189\n",
      "[2655]\tvalidation_0-logloss:0.21189\n",
      "[2656]\tvalidation_0-logloss:0.21188\n",
      "[2657]\tvalidation_0-logloss:0.21188\n",
      "[2658]\tvalidation_0-logloss:0.21188\n",
      "[2659]\tvalidation_0-logloss:0.21187\n",
      "[2660]\tvalidation_0-logloss:0.21187\n",
      "[2661]\tvalidation_0-logloss:0.21186\n",
      "[2662]\tvalidation_0-logloss:0.21186\n",
      "[2663]\tvalidation_0-logloss:0.21185\n",
      "[2664]\tvalidation_0-logloss:0.21185\n",
      "[2665]\tvalidation_0-logloss:0.21185\n",
      "[2666]\tvalidation_0-logloss:0.21184\n",
      "[2667]\tvalidation_0-logloss:0.21184\n",
      "[2668]\tvalidation_0-logloss:0.21183\n",
      "[2669]\tvalidation_0-logloss:0.21183\n",
      "[2670]\tvalidation_0-logloss:0.21182\n",
      "[2671]\tvalidation_0-logloss:0.21182\n",
      "[2672]\tvalidation_0-logloss:0.21181\n",
      "[2673]\tvalidation_0-logloss:0.21181\n",
      "[2674]\tvalidation_0-logloss:0.21181\n",
      "[2675]\tvalidation_0-logloss:0.21180\n",
      "[2676]\tvalidation_0-logloss:0.21180\n",
      "[2677]\tvalidation_0-logloss:0.21179\n",
      "[2678]\tvalidation_0-logloss:0.21179\n",
      "[2679]\tvalidation_0-logloss:0.21178\n",
      "[2680]\tvalidation_0-logloss:0.21178\n",
      "[2681]\tvalidation_0-logloss:0.21177\n",
      "[2682]\tvalidation_0-logloss:0.21177\n",
      "[2683]\tvalidation_0-logloss:0.21176\n",
      "[2684]\tvalidation_0-logloss:0.21176\n",
      "[2685]\tvalidation_0-logloss:0.21175\n",
      "[2686]\tvalidation_0-logloss:0.21175\n",
      "[2687]\tvalidation_0-logloss:0.21174\n",
      "[2688]\tvalidation_0-logloss:0.21173\n",
      "[2689]\tvalidation_0-logloss:0.21173\n",
      "[2690]\tvalidation_0-logloss:0.21173\n",
      "[2691]\tvalidation_0-logloss:0.21173\n",
      "[2692]\tvalidation_0-logloss:0.21172\n",
      "[2693]\tvalidation_0-logloss:0.21172\n",
      "[2694]\tvalidation_0-logloss:0.21171\n",
      "[2695]\tvalidation_0-logloss:0.21170\n",
      "[2696]\tvalidation_0-logloss:0.21170\n",
      "[2697]\tvalidation_0-logloss:0.21169\n",
      "[2698]\tvalidation_0-logloss:0.21169\n",
      "[2699]\tvalidation_0-logloss:0.21168\n",
      "[2700]\tvalidation_0-logloss:0.21168\n",
      "[2701]\tvalidation_0-logloss:0.21168\n",
      "[2702]\tvalidation_0-logloss:0.21168\n",
      "[2703]\tvalidation_0-logloss:0.21167\n",
      "[2704]\tvalidation_0-logloss:0.21167\n",
      "[2705]\tvalidation_0-logloss:0.21166\n",
      "[2706]\tvalidation_0-logloss:0.21166\n",
      "[2707]\tvalidation_0-logloss:0.21166\n",
      "[2708]\tvalidation_0-logloss:0.21165\n",
      "[2709]\tvalidation_0-logloss:0.21165\n",
      "[2710]\tvalidation_0-logloss:0.21165\n",
      "[2711]\tvalidation_0-logloss:0.21164\n",
      "[2712]\tvalidation_0-logloss:0.21164\n",
      "[2713]\tvalidation_0-logloss:0.21163\n",
      "[2714]\tvalidation_0-logloss:0.21163\n",
      "[2715]\tvalidation_0-logloss:0.21162\n",
      "[2716]\tvalidation_0-logloss:0.21162\n",
      "[2717]\tvalidation_0-logloss:0.21162\n",
      "[2718]\tvalidation_0-logloss:0.21162\n",
      "[2719]\tvalidation_0-logloss:0.21161\n",
      "[2720]\tvalidation_0-logloss:0.21161\n",
      "[2721]\tvalidation_0-logloss:0.21161\n",
      "[2722]\tvalidation_0-logloss:0.21160\n",
      "[2723]\tvalidation_0-logloss:0.21160\n",
      "[2724]\tvalidation_0-logloss:0.21159\n",
      "[2725]\tvalidation_0-logloss:0.21159\n",
      "[2726]\tvalidation_0-logloss:0.21159\n",
      "[2727]\tvalidation_0-logloss:0.21158\n",
      "[2728]\tvalidation_0-logloss:0.21158\n",
      "[2729]\tvalidation_0-logloss:0.21158\n",
      "[2730]\tvalidation_0-logloss:0.21157\n",
      "[2731]\tvalidation_0-logloss:0.21157\n",
      "[2732]\tvalidation_0-logloss:0.21156\n",
      "[2733]\tvalidation_0-logloss:0.21156\n",
      "[2734]\tvalidation_0-logloss:0.21155\n",
      "[2735]\tvalidation_0-logloss:0.21155\n",
      "[2736]\tvalidation_0-logloss:0.21154\n",
      "[2737]\tvalidation_0-logloss:0.21154\n",
      "[2738]\tvalidation_0-logloss:0.21154\n",
      "[2739]\tvalidation_0-logloss:0.21153\n",
      "[2740]\tvalidation_0-logloss:0.21153\n",
      "[2741]\tvalidation_0-logloss:0.21152\n",
      "[2742]\tvalidation_0-logloss:0.21152\n",
      "[2743]\tvalidation_0-logloss:0.21152\n",
      "[2744]\tvalidation_0-logloss:0.21151\n",
      "[2745]\tvalidation_0-logloss:0.21151\n",
      "[2746]\tvalidation_0-logloss:0.21150\n",
      "[2747]\tvalidation_0-logloss:0.21150\n",
      "[2748]\tvalidation_0-logloss:0.21149\n",
      "[2749]\tvalidation_0-logloss:0.21149\n",
      "[2750]\tvalidation_0-logloss:0.21149\n",
      "[2751]\tvalidation_0-logloss:0.21148\n",
      "[2752]\tvalidation_0-logloss:0.21148\n",
      "[2753]\tvalidation_0-logloss:0.21148\n",
      "[2754]\tvalidation_0-logloss:0.21147\n",
      "[2755]\tvalidation_0-logloss:0.21147\n",
      "[2756]\tvalidation_0-logloss:0.21147\n",
      "[2757]\tvalidation_0-logloss:0.21146\n",
      "[2758]\tvalidation_0-logloss:0.21146\n",
      "[2759]\tvalidation_0-logloss:0.21146\n",
      "[2760]\tvalidation_0-logloss:0.21145\n",
      "[2761]\tvalidation_0-logloss:0.21145\n",
      "[2762]\tvalidation_0-logloss:0.21144\n",
      "[2763]\tvalidation_0-logloss:0.21144\n",
      "[2764]\tvalidation_0-logloss:0.21143\n",
      "[2765]\tvalidation_0-logloss:0.21143\n",
      "[2766]\tvalidation_0-logloss:0.21142\n",
      "[2767]\tvalidation_0-logloss:0.21142\n",
      "[2768]\tvalidation_0-logloss:0.21141\n",
      "[2769]\tvalidation_0-logloss:0.21141\n",
      "[2770]\tvalidation_0-logloss:0.21140\n",
      "[2771]\tvalidation_0-logloss:0.21140\n",
      "[2772]\tvalidation_0-logloss:0.21140\n",
      "[2773]\tvalidation_0-logloss:0.21140\n",
      "[2774]\tvalidation_0-logloss:0.21139\n",
      "[2775]\tvalidation_0-logloss:0.21139\n",
      "[2776]\tvalidation_0-logloss:0.21139\n",
      "[2777]\tvalidation_0-logloss:0.21139\n",
      "[2778]\tvalidation_0-logloss:0.21138\n",
      "[2779]\tvalidation_0-logloss:0.21138\n",
      "[2780]\tvalidation_0-logloss:0.21138\n",
      "[2781]\tvalidation_0-logloss:0.21138\n",
      "[2782]\tvalidation_0-logloss:0.21137\n",
      "[2783]\tvalidation_0-logloss:0.21137\n",
      "[2784]\tvalidation_0-logloss:0.21136\n",
      "[2785]\tvalidation_0-logloss:0.21136\n",
      "[2786]\tvalidation_0-logloss:0.21136\n",
      "[2787]\tvalidation_0-logloss:0.21135\n",
      "[2788]\tvalidation_0-logloss:0.21135\n",
      "[2789]\tvalidation_0-logloss:0.21134\n",
      "[2790]\tvalidation_0-logloss:0.21134\n",
      "[2791]\tvalidation_0-logloss:0.21133\n",
      "[2792]\tvalidation_0-logloss:0.21133\n",
      "[2793]\tvalidation_0-logloss:0.21133\n",
      "[2794]\tvalidation_0-logloss:0.21132\n",
      "[2795]\tvalidation_0-logloss:0.21132\n",
      "[2796]\tvalidation_0-logloss:0.21132\n",
      "[2797]\tvalidation_0-logloss:0.21132\n",
      "[2798]\tvalidation_0-logloss:0.21132\n",
      "[2799]\tvalidation_0-logloss:0.21131\n",
      "[2800]\tvalidation_0-logloss:0.21131\n",
      "[2801]\tvalidation_0-logloss:0.21131\n",
      "[2802]\tvalidation_0-logloss:0.21131\n",
      "[2803]\tvalidation_0-logloss:0.21130\n",
      "[2804]\tvalidation_0-logloss:0.21130\n",
      "[2805]\tvalidation_0-logloss:0.21129\n",
      "[2806]\tvalidation_0-logloss:0.21129\n",
      "[2807]\tvalidation_0-logloss:0.21129\n",
      "[2808]\tvalidation_0-logloss:0.21129\n",
      "[2809]\tvalidation_0-logloss:0.21128\n",
      "[2810]\tvalidation_0-logloss:0.21128\n",
      "[2811]\tvalidation_0-logloss:0.21127\n",
      "[2812]\tvalidation_0-logloss:0.21127\n",
      "[2813]\tvalidation_0-logloss:0.21126\n",
      "[2814]\tvalidation_0-logloss:0.21126\n",
      "[2815]\tvalidation_0-logloss:0.21126\n",
      "[2816]\tvalidation_0-logloss:0.21125\n",
      "[2817]\tvalidation_0-logloss:0.21125\n",
      "[2818]\tvalidation_0-logloss:0.21124\n",
      "[2819]\tvalidation_0-logloss:0.21124\n",
      "[2820]\tvalidation_0-logloss:0.21124\n",
      "[2821]\tvalidation_0-logloss:0.21124\n",
      "[2822]\tvalidation_0-logloss:0.21123\n",
      "[2823]\tvalidation_0-logloss:0.21123\n",
      "[2824]\tvalidation_0-logloss:0.21123\n",
      "[2825]\tvalidation_0-logloss:0.21122\n",
      "[2826]\tvalidation_0-logloss:0.21122\n",
      "[2827]\tvalidation_0-logloss:0.21121\n",
      "[2828]\tvalidation_0-logloss:0.21121\n",
      "[2829]\tvalidation_0-logloss:0.21121\n",
      "[2830]\tvalidation_0-logloss:0.21121\n",
      "[2831]\tvalidation_0-logloss:0.21120\n",
      "[2832]\tvalidation_0-logloss:0.21120\n",
      "[2833]\tvalidation_0-logloss:0.21119\n",
      "[2834]\tvalidation_0-logloss:0.21119\n",
      "[2835]\tvalidation_0-logloss:0.21119\n",
      "[2836]\tvalidation_0-logloss:0.21118\n",
      "[2837]\tvalidation_0-logloss:0.21118\n",
      "[2838]\tvalidation_0-logloss:0.21117\n",
      "[2839]\tvalidation_0-logloss:0.21117\n",
      "[2840]\tvalidation_0-logloss:0.21117\n",
      "[2841]\tvalidation_0-logloss:0.21117\n",
      "[2842]\tvalidation_0-logloss:0.21116\n",
      "[2843]\tvalidation_0-logloss:0.21116\n",
      "[2844]\tvalidation_0-logloss:0.21116\n",
      "[2845]\tvalidation_0-logloss:0.21116\n",
      "[2846]\tvalidation_0-logloss:0.21115\n",
      "[2847]\tvalidation_0-logloss:0.21115\n",
      "[2848]\tvalidation_0-logloss:0.21115\n",
      "[2849]\tvalidation_0-logloss:0.21114\n",
      "[2850]\tvalidation_0-logloss:0.21114\n",
      "[2851]\tvalidation_0-logloss:0.21114\n",
      "[2852]\tvalidation_0-logloss:0.21113\n",
      "[2853]\tvalidation_0-logloss:0.21113\n",
      "[2854]\tvalidation_0-logloss:0.21113\n",
      "[2855]\tvalidation_0-logloss:0.21113\n",
      "[2856]\tvalidation_0-logloss:0.21112\n",
      "[2857]\tvalidation_0-logloss:0.21112\n",
      "[2858]\tvalidation_0-logloss:0.21111\n",
      "[2859]\tvalidation_0-logloss:0.21111\n",
      "[2860]\tvalidation_0-logloss:0.21110\n",
      "[2861]\tvalidation_0-logloss:0.21110\n",
      "[2862]\tvalidation_0-logloss:0.21109\n",
      "[2863]\tvalidation_0-logloss:0.21109\n",
      "[2864]\tvalidation_0-logloss:0.21108\n",
      "[2865]\tvalidation_0-logloss:0.21108\n",
      "[2866]\tvalidation_0-logloss:0.21108\n",
      "[2867]\tvalidation_0-logloss:0.21107\n",
      "[2868]\tvalidation_0-logloss:0.21107\n",
      "[2869]\tvalidation_0-logloss:0.21107\n",
      "[2870]\tvalidation_0-logloss:0.21107\n",
      "[2871]\tvalidation_0-logloss:0.21106\n",
      "[2872]\tvalidation_0-logloss:0.21106\n",
      "[2873]\tvalidation_0-logloss:0.21106\n",
      "[2874]\tvalidation_0-logloss:0.21105\n",
      "[2875]\tvalidation_0-logloss:0.21105\n",
      "[2876]\tvalidation_0-logloss:0.21104\n",
      "[2877]\tvalidation_0-logloss:0.21104\n",
      "[2878]\tvalidation_0-logloss:0.21103\n",
      "[2879]\tvalidation_0-logloss:0.21103\n",
      "[2880]\tvalidation_0-logloss:0.21102\n",
      "[2881]\tvalidation_0-logloss:0.21102\n",
      "[2882]\tvalidation_0-logloss:0.21102\n",
      "[2883]\tvalidation_0-logloss:0.21101\n",
      "[2884]\tvalidation_0-logloss:0.21101\n",
      "[2885]\tvalidation_0-logloss:0.21101\n",
      "[2886]\tvalidation_0-logloss:0.21101\n",
      "[2887]\tvalidation_0-logloss:0.21100\n",
      "[2888]\tvalidation_0-logloss:0.21100\n",
      "[2889]\tvalidation_0-logloss:0.21099\n",
      "[2890]\tvalidation_0-logloss:0.21098\n",
      "[2891]\tvalidation_0-logloss:0.21098\n",
      "[2892]\tvalidation_0-logloss:0.21098\n",
      "[2893]\tvalidation_0-logloss:0.21098\n",
      "[2894]\tvalidation_0-logloss:0.21097\n",
      "[2895]\tvalidation_0-logloss:0.21097\n",
      "[2896]\tvalidation_0-logloss:0.21096\n",
      "[2897]\tvalidation_0-logloss:0.21096\n",
      "[2898]\tvalidation_0-logloss:0.21096\n",
      "[2899]\tvalidation_0-logloss:0.21095\n",
      "[2900]\tvalidation_0-logloss:0.21095\n",
      "[2901]\tvalidation_0-logloss:0.21095\n",
      "[2902]\tvalidation_0-logloss:0.21095\n",
      "[2903]\tvalidation_0-logloss:0.21095\n",
      "[2904]\tvalidation_0-logloss:0.21095\n",
      "[2905]\tvalidation_0-logloss:0.21094\n",
      "[2906]\tvalidation_0-logloss:0.21094\n",
      "[2907]\tvalidation_0-logloss:0.21094\n",
      "[2908]\tvalidation_0-logloss:0.21093\n",
      "[2909]\tvalidation_0-logloss:0.21093\n",
      "[2910]\tvalidation_0-logloss:0.21093\n",
      "[2911]\tvalidation_0-logloss:0.21093\n",
      "[2912]\tvalidation_0-logloss:0.21092\n",
      "[2913]\tvalidation_0-logloss:0.21092\n",
      "[2914]\tvalidation_0-logloss:0.21091\n",
      "[2915]\tvalidation_0-logloss:0.21091\n",
      "[2916]\tvalidation_0-logloss:0.21091\n",
      "[2917]\tvalidation_0-logloss:0.21090\n",
      "[2918]\tvalidation_0-logloss:0.21090\n",
      "[2919]\tvalidation_0-logloss:0.21089\n",
      "[2920]\tvalidation_0-logloss:0.21089\n",
      "[2921]\tvalidation_0-logloss:0.21089\n",
      "[2922]\tvalidation_0-logloss:0.21089\n",
      "[2923]\tvalidation_0-logloss:0.21088\n",
      "[2924]\tvalidation_0-logloss:0.21088\n",
      "[2925]\tvalidation_0-logloss:0.21087\n",
      "[2926]\tvalidation_0-logloss:0.21087\n",
      "[2927]\tvalidation_0-logloss:0.21087\n",
      "[2928]\tvalidation_0-logloss:0.21087\n",
      "[2929]\tvalidation_0-logloss:0.21086\n",
      "[2930]\tvalidation_0-logloss:0.21086\n",
      "[2931]\tvalidation_0-logloss:0.21086\n",
      "[2932]\tvalidation_0-logloss:0.21085\n",
      "[2933]\tvalidation_0-logloss:0.21085\n",
      "[2934]\tvalidation_0-logloss:0.21084\n",
      "[2935]\tvalidation_0-logloss:0.21084\n",
      "[2936]\tvalidation_0-logloss:0.21084\n",
      "[2937]\tvalidation_0-logloss:0.21084\n",
      "[2938]\tvalidation_0-logloss:0.21083\n",
      "[2939]\tvalidation_0-logloss:0.21083\n",
      "[2940]\tvalidation_0-logloss:0.21083\n",
      "[2941]\tvalidation_0-logloss:0.21083\n",
      "[2942]\tvalidation_0-logloss:0.21082\n",
      "[2943]\tvalidation_0-logloss:0.21082\n",
      "[2944]\tvalidation_0-logloss:0.21082\n",
      "[2945]\tvalidation_0-logloss:0.21081\n",
      "[2946]\tvalidation_0-logloss:0.21081\n",
      "[2947]\tvalidation_0-logloss:0.21081\n",
      "[2948]\tvalidation_0-logloss:0.21080\n",
      "[2949]\tvalidation_0-logloss:0.21080\n",
      "[2950]\tvalidation_0-logloss:0.21080\n",
      "[2951]\tvalidation_0-logloss:0.21079\n",
      "[2952]\tvalidation_0-logloss:0.21079\n",
      "[2953]\tvalidation_0-logloss:0.21079\n",
      "[2954]\tvalidation_0-logloss:0.21079\n",
      "[2955]\tvalidation_0-logloss:0.21079\n",
      "[2956]\tvalidation_0-logloss:0.21078\n",
      "[2957]\tvalidation_0-logloss:0.21078\n",
      "[2958]\tvalidation_0-logloss:0.21077\n",
      "[2959]\tvalidation_0-logloss:0.21077\n",
      "[2960]\tvalidation_0-logloss:0.21077\n",
      "[2961]\tvalidation_0-logloss:0.21076\n",
      "[2962]\tvalidation_0-logloss:0.21076\n",
      "[2963]\tvalidation_0-logloss:0.21076\n",
      "[2964]\tvalidation_0-logloss:0.21076\n",
      "[2965]\tvalidation_0-logloss:0.21075\n",
      "[2966]\tvalidation_0-logloss:0.21075\n",
      "[2967]\tvalidation_0-logloss:0.21075\n",
      "[2968]\tvalidation_0-logloss:0.21074\n",
      "[2969]\tvalidation_0-logloss:0.21074\n",
      "[2970]\tvalidation_0-logloss:0.21074\n",
      "[2971]\tvalidation_0-logloss:0.21073\n",
      "[2972]\tvalidation_0-logloss:0.21073\n",
      "[2973]\tvalidation_0-logloss:0.21073\n",
      "[2974]\tvalidation_0-logloss:0.21073\n",
      "[2975]\tvalidation_0-logloss:0.21072\n",
      "[2976]\tvalidation_0-logloss:0.21072\n",
      "[2977]\tvalidation_0-logloss:0.21072\n",
      "[2978]\tvalidation_0-logloss:0.21071\n",
      "[2979]\tvalidation_0-logloss:0.21071\n",
      "[2980]\tvalidation_0-logloss:0.21071\n",
      "[2981]\tvalidation_0-logloss:0.21070\n",
      "[2982]\tvalidation_0-logloss:0.21070\n",
      "[2983]\tvalidation_0-logloss:0.21069\n",
      "[2984]\tvalidation_0-logloss:0.21069\n",
      "[2985]\tvalidation_0-logloss:0.21069\n",
      "[2986]\tvalidation_0-logloss:0.21069\n",
      "[2987]\tvalidation_0-logloss:0.21069\n",
      "[2988]\tvalidation_0-logloss:0.21068\n",
      "[2989]\tvalidation_0-logloss:0.21068\n",
      "[2990]\tvalidation_0-logloss:0.21068\n",
      "[2991]\tvalidation_0-logloss:0.21067\n",
      "[2992]\tvalidation_0-logloss:0.21067\n",
      "[2993]\tvalidation_0-logloss:0.21067\n",
      "[2994]\tvalidation_0-logloss:0.21066\n",
      "[2995]\tvalidation_0-logloss:0.21066\n",
      "[2996]\tvalidation_0-logloss:0.21066\n",
      "[2997]\tvalidation_0-logloss:0.21065\n",
      "[2998]\tvalidation_0-logloss:0.21065\n",
      "[2999]\tvalidation_0-logloss:0.21065\n",
      "[3000]\tvalidation_0-logloss:0.21065\n",
      "[3001]\tvalidation_0-logloss:0.21064\n",
      "[3002]\tvalidation_0-logloss:0.21064\n",
      "[3003]\tvalidation_0-logloss:0.21064\n",
      "[3004]\tvalidation_0-logloss:0.21064\n",
      "[3005]\tvalidation_0-logloss:0.21064\n",
      "[3006]\tvalidation_0-logloss:0.21063\n",
      "[3007]\tvalidation_0-logloss:0.21063\n",
      "[3008]\tvalidation_0-logloss:0.21063\n",
      "[3009]\tvalidation_0-logloss:0.21062\n",
      "[3010]\tvalidation_0-logloss:0.21062\n",
      "[3011]\tvalidation_0-logloss:0.21061\n",
      "[3012]\tvalidation_0-logloss:0.21061\n",
      "[3013]\tvalidation_0-logloss:0.21061\n",
      "[3014]\tvalidation_0-logloss:0.21060\n",
      "[3015]\tvalidation_0-logloss:0.21060\n",
      "[3016]\tvalidation_0-logloss:0.21060\n",
      "[3017]\tvalidation_0-logloss:0.21059\n",
      "[3018]\tvalidation_0-logloss:0.21059\n",
      "[3019]\tvalidation_0-logloss:0.21059\n",
      "[3020]\tvalidation_0-logloss:0.21058\n",
      "[3021]\tvalidation_0-logloss:0.21058\n",
      "[3022]\tvalidation_0-logloss:0.21058\n",
      "[3023]\tvalidation_0-logloss:0.21057\n",
      "[3024]\tvalidation_0-logloss:0.21057\n",
      "[3025]\tvalidation_0-logloss:0.21056\n",
      "[3026]\tvalidation_0-logloss:0.21056\n",
      "[3027]\tvalidation_0-logloss:0.21056\n",
      "[3028]\tvalidation_0-logloss:0.21055\n",
      "[3029]\tvalidation_0-logloss:0.21055\n",
      "[3030]\tvalidation_0-logloss:0.21055\n",
      "[3031]\tvalidation_0-logloss:0.21055\n",
      "[3032]\tvalidation_0-logloss:0.21054\n",
      "[3033]\tvalidation_0-logloss:0.21054\n",
      "[3034]\tvalidation_0-logloss:0.21053\n",
      "[3035]\tvalidation_0-logloss:0.21053\n",
      "[3036]\tvalidation_0-logloss:0.21052\n",
      "[3037]\tvalidation_0-logloss:0.21052\n",
      "[3038]\tvalidation_0-logloss:0.21051\n",
      "[3039]\tvalidation_0-logloss:0.21051\n",
      "[3040]\tvalidation_0-logloss:0.21050\n",
      "[3041]\tvalidation_0-logloss:0.21050\n",
      "[3042]\tvalidation_0-logloss:0.21050\n",
      "[3043]\tvalidation_0-logloss:0.21049\n",
      "[3044]\tvalidation_0-logloss:0.21049\n",
      "[3045]\tvalidation_0-logloss:0.21049\n",
      "[3046]\tvalidation_0-logloss:0.21048\n",
      "[3047]\tvalidation_0-logloss:0.21048\n",
      "[3048]\tvalidation_0-logloss:0.21047\n",
      "[3049]\tvalidation_0-logloss:0.21047\n",
      "[3050]\tvalidation_0-logloss:0.21047\n",
      "[3051]\tvalidation_0-logloss:0.21047\n",
      "[3052]\tvalidation_0-logloss:0.21046\n",
      "[3053]\tvalidation_0-logloss:0.21046\n",
      "[3054]\tvalidation_0-logloss:0.21045\n",
      "[3055]\tvalidation_0-logloss:0.21045\n",
      "[3056]\tvalidation_0-logloss:0.21044\n",
      "[3057]\tvalidation_0-logloss:0.21044\n",
      "[3058]\tvalidation_0-logloss:0.21043\n",
      "[3059]\tvalidation_0-logloss:0.21043\n",
      "[3060]\tvalidation_0-logloss:0.21042\n",
      "[3061]\tvalidation_0-logloss:0.21042\n",
      "[3062]\tvalidation_0-logloss:0.21041\n",
      "[3063]\tvalidation_0-logloss:0.21041\n",
      "[3064]\tvalidation_0-logloss:0.21041\n",
      "[3065]\tvalidation_0-logloss:0.21040\n",
      "[3066]\tvalidation_0-logloss:0.21040\n",
      "[3067]\tvalidation_0-logloss:0.21039\n",
      "[3068]\tvalidation_0-logloss:0.21039\n",
      "[3069]\tvalidation_0-logloss:0.21039\n",
      "[3070]\tvalidation_0-logloss:0.21038\n",
      "[3071]\tvalidation_0-logloss:0.21038\n",
      "[3072]\tvalidation_0-logloss:0.21038\n",
      "[3073]\tvalidation_0-logloss:0.21038\n",
      "[3074]\tvalidation_0-logloss:0.21037\n",
      "[3075]\tvalidation_0-logloss:0.21037\n",
      "[3076]\tvalidation_0-logloss:0.21037\n",
      "[3077]\tvalidation_0-logloss:0.21037\n",
      "[3078]\tvalidation_0-logloss:0.21036\n",
      "[3079]\tvalidation_0-logloss:0.21036\n",
      "[3080]\tvalidation_0-logloss:0.21036\n",
      "[3081]\tvalidation_0-logloss:0.21035\n",
      "[3082]\tvalidation_0-logloss:0.21035\n",
      "[3083]\tvalidation_0-logloss:0.21034\n",
      "[3084]\tvalidation_0-logloss:0.21034\n",
      "[3085]\tvalidation_0-logloss:0.21034\n",
      "[3086]\tvalidation_0-logloss:0.21034\n",
      "[3087]\tvalidation_0-logloss:0.21033\n",
      "[3088]\tvalidation_0-logloss:0.21033\n",
      "[3089]\tvalidation_0-logloss:0.21033\n",
      "[3090]\tvalidation_0-logloss:0.21032\n",
      "[3091]\tvalidation_0-logloss:0.21032\n",
      "[3092]\tvalidation_0-logloss:0.21031\n",
      "[3093]\tvalidation_0-logloss:0.21031\n",
      "[3094]\tvalidation_0-logloss:0.21030\n",
      "[3095]\tvalidation_0-logloss:0.21030\n",
      "[3096]\tvalidation_0-logloss:0.21030\n",
      "[3097]\tvalidation_0-logloss:0.21030\n",
      "[3098]\tvalidation_0-logloss:0.21029\n",
      "[3099]\tvalidation_0-logloss:0.21029\n",
      "[3100]\tvalidation_0-logloss:0.21028\n",
      "[3101]\tvalidation_0-logloss:0.21028\n",
      "[3102]\tvalidation_0-logloss:0.21028\n",
      "[3103]\tvalidation_0-logloss:0.21027\n",
      "[3104]\tvalidation_0-logloss:0.21027\n",
      "[3105]\tvalidation_0-logloss:0.21026\n",
      "[3106]\tvalidation_0-logloss:0.21026\n",
      "[3107]\tvalidation_0-logloss:0.21026\n",
      "[3108]\tvalidation_0-logloss:0.21025\n",
      "[3109]\tvalidation_0-logloss:0.21024\n",
      "[3110]\tvalidation_0-logloss:0.21024\n",
      "[3111]\tvalidation_0-logloss:0.21024\n",
      "[3112]\tvalidation_0-logloss:0.21023\n",
      "[3113]\tvalidation_0-logloss:0.21023\n",
      "[3114]\tvalidation_0-logloss:0.21023\n",
      "[3115]\tvalidation_0-logloss:0.21022\n",
      "[3116]\tvalidation_0-logloss:0.21022\n",
      "[3117]\tvalidation_0-logloss:0.21021\n",
      "[3118]\tvalidation_0-logloss:0.21021\n",
      "[3119]\tvalidation_0-logloss:0.21020\n",
      "[3120]\tvalidation_0-logloss:0.21020\n",
      "[3121]\tvalidation_0-logloss:0.21020\n",
      "[3122]\tvalidation_0-logloss:0.21020\n",
      "[3123]\tvalidation_0-logloss:0.21019\n",
      "[3124]\tvalidation_0-logloss:0.21019\n",
      "[3125]\tvalidation_0-logloss:0.21018\n",
      "[3126]\tvalidation_0-logloss:0.21018\n",
      "[3127]\tvalidation_0-logloss:0.21018\n",
      "[3128]\tvalidation_0-logloss:0.21017\n",
      "[3129]\tvalidation_0-logloss:0.21017\n",
      "[3130]\tvalidation_0-logloss:0.21016\n",
      "[3131]\tvalidation_0-logloss:0.21016\n",
      "[3132]\tvalidation_0-logloss:0.21015\n",
      "[3133]\tvalidation_0-logloss:0.21015\n",
      "[3134]\tvalidation_0-logloss:0.21015\n",
      "[3135]\tvalidation_0-logloss:0.21014\n",
      "[3136]\tvalidation_0-logloss:0.21014\n",
      "[3137]\tvalidation_0-logloss:0.21014\n",
      "[3138]\tvalidation_0-logloss:0.21013\n",
      "[3139]\tvalidation_0-logloss:0.21013\n",
      "[3140]\tvalidation_0-logloss:0.21012\n",
      "[3141]\tvalidation_0-logloss:0.21012\n",
      "[3142]\tvalidation_0-logloss:0.21012\n",
      "[3143]\tvalidation_0-logloss:0.21011\n",
      "[3144]\tvalidation_0-logloss:0.21011\n",
      "[3145]\tvalidation_0-logloss:0.21011\n",
      "[3146]\tvalidation_0-logloss:0.21010\n",
      "[3147]\tvalidation_0-logloss:0.21010\n",
      "[3148]\tvalidation_0-logloss:0.21009\n",
      "[3149]\tvalidation_0-logloss:0.21009\n",
      "[3150]\tvalidation_0-logloss:0.21009\n",
      "[3151]\tvalidation_0-logloss:0.21008\n",
      "[3152]\tvalidation_0-logloss:0.21008\n",
      "[3153]\tvalidation_0-logloss:0.21008\n",
      "[3154]\tvalidation_0-logloss:0.21007\n",
      "[3155]\tvalidation_0-logloss:0.21007\n",
      "[3156]\tvalidation_0-logloss:0.21006\n",
      "[3157]\tvalidation_0-logloss:0.21006\n",
      "[3158]\tvalidation_0-logloss:0.21006\n",
      "[3159]\tvalidation_0-logloss:0.21006\n",
      "[3160]\tvalidation_0-logloss:0.21005\n",
      "[3161]\tvalidation_0-logloss:0.21005\n",
      "[3162]\tvalidation_0-logloss:0.21005\n",
      "[3163]\tvalidation_0-logloss:0.21004\n",
      "[3164]\tvalidation_0-logloss:0.21004\n",
      "[3165]\tvalidation_0-logloss:0.21004\n",
      "[3166]\tvalidation_0-logloss:0.21003\n",
      "[3167]\tvalidation_0-logloss:0.21003\n",
      "[3168]\tvalidation_0-logloss:0.21002\n",
      "[3169]\tvalidation_0-logloss:0.21002\n",
      "[3170]\tvalidation_0-logloss:0.21002\n",
      "[3171]\tvalidation_0-logloss:0.21001\n",
      "[3172]\tvalidation_0-logloss:0.21001\n",
      "[3173]\tvalidation_0-logloss:0.21000\n",
      "[3174]\tvalidation_0-logloss:0.20999\n",
      "[3175]\tvalidation_0-logloss:0.20999\n",
      "[3176]\tvalidation_0-logloss:0.20999\n",
      "[3177]\tvalidation_0-logloss:0.20998\n",
      "[3178]\tvalidation_0-logloss:0.20998\n",
      "[3179]\tvalidation_0-logloss:0.20998\n",
      "[3180]\tvalidation_0-logloss:0.20997\n",
      "[3181]\tvalidation_0-logloss:0.20997\n",
      "[3182]\tvalidation_0-logloss:0.20997\n",
      "[3183]\tvalidation_0-logloss:0.20996\n",
      "[3184]\tvalidation_0-logloss:0.20996\n",
      "[3185]\tvalidation_0-logloss:0.20996\n",
      "[3186]\tvalidation_0-logloss:0.20995\n",
      "[3187]\tvalidation_0-logloss:0.20995\n",
      "[3188]\tvalidation_0-logloss:0.20994\n",
      "[3189]\tvalidation_0-logloss:0.20994\n",
      "[3190]\tvalidation_0-logloss:0.20993\n",
      "[3191]\tvalidation_0-logloss:0.20993\n",
      "[3192]\tvalidation_0-logloss:0.20993\n",
      "[3193]\tvalidation_0-logloss:0.20992\n",
      "[3194]\tvalidation_0-logloss:0.20992\n",
      "[3195]\tvalidation_0-logloss:0.20991\n",
      "[3196]\tvalidation_0-logloss:0.20991\n",
      "[3197]\tvalidation_0-logloss:0.20990\n",
      "[3198]\tvalidation_0-logloss:0.20990\n",
      "[3199]\tvalidation_0-logloss:0.20990\n",
      "[3200]\tvalidation_0-logloss:0.20989\n",
      "[3201]\tvalidation_0-logloss:0.20989\n",
      "[3202]\tvalidation_0-logloss:0.20988\n",
      "[3203]\tvalidation_0-logloss:0.20988\n",
      "[3204]\tvalidation_0-logloss:0.20988\n",
      "[3205]\tvalidation_0-logloss:0.20987\n",
      "[3206]\tvalidation_0-logloss:0.20987\n",
      "[3207]\tvalidation_0-logloss:0.20986\n",
      "[3208]\tvalidation_0-logloss:0.20986\n",
      "[3209]\tvalidation_0-logloss:0.20986\n",
      "[3210]\tvalidation_0-logloss:0.20985\n",
      "[3211]\tvalidation_0-logloss:0.20985\n",
      "[3212]\tvalidation_0-logloss:0.20985\n",
      "[3213]\tvalidation_0-logloss:0.20984\n",
      "[3214]\tvalidation_0-logloss:0.20984\n",
      "[3215]\tvalidation_0-logloss:0.20984\n",
      "[3216]\tvalidation_0-logloss:0.20983\n",
      "[3217]\tvalidation_0-logloss:0.20983\n",
      "[3218]\tvalidation_0-logloss:0.20983\n",
      "[3219]\tvalidation_0-logloss:0.20982\n",
      "[3220]\tvalidation_0-logloss:0.20982\n",
      "[3221]\tvalidation_0-logloss:0.20982\n",
      "[3222]\tvalidation_0-logloss:0.20981\n",
      "[3223]\tvalidation_0-logloss:0.20981\n",
      "[3224]\tvalidation_0-logloss:0.20981\n",
      "[3225]\tvalidation_0-logloss:0.20980\n",
      "[3226]\tvalidation_0-logloss:0.20980\n",
      "[3227]\tvalidation_0-logloss:0.20979\n",
      "[3228]\tvalidation_0-logloss:0.20979\n",
      "[3229]\tvalidation_0-logloss:0.20979\n",
      "[3230]\tvalidation_0-logloss:0.20978\n",
      "[3231]\tvalidation_0-logloss:0.20978\n",
      "[3232]\tvalidation_0-logloss:0.20977\n",
      "[3233]\tvalidation_0-logloss:0.20977\n",
      "[3234]\tvalidation_0-logloss:0.20977\n",
      "[3235]\tvalidation_0-logloss:0.20977\n",
      "[3236]\tvalidation_0-logloss:0.20976\n",
      "[3237]\tvalidation_0-logloss:0.20976\n",
      "[3238]\tvalidation_0-logloss:0.20976\n",
      "[3239]\tvalidation_0-logloss:0.20975\n",
      "[3240]\tvalidation_0-logloss:0.20975\n",
      "[3241]\tvalidation_0-logloss:0.20975\n",
      "[3242]\tvalidation_0-logloss:0.20975\n",
      "[3243]\tvalidation_0-logloss:0.20974\n",
      "[3244]\tvalidation_0-logloss:0.20974\n",
      "[3245]\tvalidation_0-logloss:0.20974\n",
      "[3246]\tvalidation_0-logloss:0.20973\n",
      "[3247]\tvalidation_0-logloss:0.20973\n",
      "[3248]\tvalidation_0-logloss:0.20973\n",
      "[3249]\tvalidation_0-logloss:0.20972\n",
      "[3250]\tvalidation_0-logloss:0.20972\n",
      "[3251]\tvalidation_0-logloss:0.20971\n",
      "[3252]\tvalidation_0-logloss:0.20971\n",
      "[3253]\tvalidation_0-logloss:0.20971\n",
      "[3254]\tvalidation_0-logloss:0.20970\n",
      "[3255]\tvalidation_0-logloss:0.20970\n",
      "[3256]\tvalidation_0-logloss:0.20969\n",
      "[3257]\tvalidation_0-logloss:0.20969\n",
      "[3258]\tvalidation_0-logloss:0.20969\n",
      "[3259]\tvalidation_0-logloss:0.20968\n",
      "[3260]\tvalidation_0-logloss:0.20968\n",
      "[3261]\tvalidation_0-logloss:0.20968\n",
      "[3262]\tvalidation_0-logloss:0.20968\n",
      "[3263]\tvalidation_0-logloss:0.20967\n",
      "[3264]\tvalidation_0-logloss:0.20967\n",
      "[3265]\tvalidation_0-logloss:0.20966\n",
      "[3266]\tvalidation_0-logloss:0.20966\n",
      "[3267]\tvalidation_0-logloss:0.20966\n",
      "[3268]\tvalidation_0-logloss:0.20966\n",
      "[3269]\tvalidation_0-logloss:0.20965\n",
      "[3270]\tvalidation_0-logloss:0.20965\n",
      "[3271]\tvalidation_0-logloss:0.20965\n",
      "[3272]\tvalidation_0-logloss:0.20965\n",
      "[3273]\tvalidation_0-logloss:0.20964\n",
      "[3274]\tvalidation_0-logloss:0.20964\n",
      "[3275]\tvalidation_0-logloss:0.20963\n",
      "[3276]\tvalidation_0-logloss:0.20963\n",
      "[3277]\tvalidation_0-logloss:0.20963\n",
      "[3278]\tvalidation_0-logloss:0.20962\n",
      "[3279]\tvalidation_0-logloss:0.20962\n",
      "[3280]\tvalidation_0-logloss:0.20962\n",
      "[3281]\tvalidation_0-logloss:0.20961\n",
      "[3282]\tvalidation_0-logloss:0.20961\n",
      "[3283]\tvalidation_0-logloss:0.20961\n",
      "[3284]\tvalidation_0-logloss:0.20960\n",
      "[3285]\tvalidation_0-logloss:0.20960\n",
      "[3286]\tvalidation_0-logloss:0.20960\n",
      "[3287]\tvalidation_0-logloss:0.20959\n",
      "[3288]\tvalidation_0-logloss:0.20959\n",
      "[3289]\tvalidation_0-logloss:0.20958\n",
      "[3290]\tvalidation_0-logloss:0.20958\n",
      "[3291]\tvalidation_0-logloss:0.20958\n",
      "[3292]\tvalidation_0-logloss:0.20958\n",
      "[3293]\tvalidation_0-logloss:0.20957\n",
      "[3294]\tvalidation_0-logloss:0.20957\n",
      "[3295]\tvalidation_0-logloss:0.20956\n",
      "[3296]\tvalidation_0-logloss:0.20956\n",
      "[3297]\tvalidation_0-logloss:0.20956\n",
      "[3298]\tvalidation_0-logloss:0.20955\n",
      "[3299]\tvalidation_0-logloss:0.20955\n",
      "[3300]\tvalidation_0-logloss:0.20954\n",
      "[3301]\tvalidation_0-logloss:0.20954\n",
      "[3302]\tvalidation_0-logloss:0.20954\n",
      "[3303]\tvalidation_0-logloss:0.20954\n",
      "[3304]\tvalidation_0-logloss:0.20953\n",
      "[3305]\tvalidation_0-logloss:0.20953\n",
      "[3306]\tvalidation_0-logloss:0.20952\n",
      "[3307]\tvalidation_0-logloss:0.20952\n",
      "[3308]\tvalidation_0-logloss:0.20952\n",
      "[3309]\tvalidation_0-logloss:0.20951\n",
      "[3310]\tvalidation_0-logloss:0.20951\n",
      "[3311]\tvalidation_0-logloss:0.20951\n",
      "[3312]\tvalidation_0-logloss:0.20950\n",
      "[3313]\tvalidation_0-logloss:0.20950\n",
      "[3314]\tvalidation_0-logloss:0.20949\n",
      "[3315]\tvalidation_0-logloss:0.20949\n",
      "[3316]\tvalidation_0-logloss:0.20949\n",
      "[3317]\tvalidation_0-logloss:0.20948\n",
      "[3318]\tvalidation_0-logloss:0.20948\n",
      "[3319]\tvalidation_0-logloss:0.20947\n",
      "[3320]\tvalidation_0-logloss:0.20947\n",
      "[3321]\tvalidation_0-logloss:0.20946\n",
      "[3322]\tvalidation_0-logloss:0.20946\n",
      "[3323]\tvalidation_0-logloss:0.20946\n",
      "[3324]\tvalidation_0-logloss:0.20945\n",
      "[3325]\tvalidation_0-logloss:0.20945\n",
      "[3326]\tvalidation_0-logloss:0.20944\n",
      "[3327]\tvalidation_0-logloss:0.20944\n",
      "[3328]\tvalidation_0-logloss:0.20943\n",
      "[3329]\tvalidation_0-logloss:0.20943\n",
      "[3330]\tvalidation_0-logloss:0.20943\n",
      "[3331]\tvalidation_0-logloss:0.20942\n",
      "[3332]\tvalidation_0-logloss:0.20942\n",
      "[3333]\tvalidation_0-logloss:0.20942\n",
      "[3334]\tvalidation_0-logloss:0.20941\n",
      "[3335]\tvalidation_0-logloss:0.20941\n",
      "[3336]\tvalidation_0-logloss:0.20941\n",
      "[3337]\tvalidation_0-logloss:0.20940\n",
      "[3338]\tvalidation_0-logloss:0.20940\n",
      "[3339]\tvalidation_0-logloss:0.20939\n",
      "[3340]\tvalidation_0-logloss:0.20939\n",
      "[3341]\tvalidation_0-logloss:0.20939\n",
      "[3342]\tvalidation_0-logloss:0.20938\n",
      "[3343]\tvalidation_0-logloss:0.20938\n",
      "[3344]\tvalidation_0-logloss:0.20937\n",
      "[3345]\tvalidation_0-logloss:0.20937\n",
      "[3346]\tvalidation_0-logloss:0.20937\n",
      "[3347]\tvalidation_0-logloss:0.20936\n",
      "[3348]\tvalidation_0-logloss:0.20936\n",
      "[3349]\tvalidation_0-logloss:0.20935\n",
      "[3350]\tvalidation_0-logloss:0.20935\n",
      "[3351]\tvalidation_0-logloss:0.20935\n",
      "[3352]\tvalidation_0-logloss:0.20934\n",
      "[3353]\tvalidation_0-logloss:0.20934\n",
      "[3354]\tvalidation_0-logloss:0.20933\n",
      "[3355]\tvalidation_0-logloss:0.20933\n",
      "[3356]\tvalidation_0-logloss:0.20933\n",
      "[3357]\tvalidation_0-logloss:0.20932\n",
      "[3358]\tvalidation_0-logloss:0.20932\n",
      "[3359]\tvalidation_0-logloss:0.20931\n",
      "[3360]\tvalidation_0-logloss:0.20931\n",
      "[3361]\tvalidation_0-logloss:0.20931\n",
      "[3362]\tvalidation_0-logloss:0.20930\n",
      "[3363]\tvalidation_0-logloss:0.20930\n",
      "[3364]\tvalidation_0-logloss:0.20930\n",
      "[3365]\tvalidation_0-logloss:0.20929\n",
      "[3366]\tvalidation_0-logloss:0.20929\n",
      "[3367]\tvalidation_0-logloss:0.20929\n",
      "[3368]\tvalidation_0-logloss:0.20928\n",
      "[3369]\tvalidation_0-logloss:0.20928\n",
      "[3370]\tvalidation_0-logloss:0.20927\n",
      "[3371]\tvalidation_0-logloss:0.20927\n",
      "[3372]\tvalidation_0-logloss:0.20927\n",
      "[3373]\tvalidation_0-logloss:0.20926\n",
      "[3374]\tvalidation_0-logloss:0.20926\n",
      "[3375]\tvalidation_0-logloss:0.20926\n",
      "[3376]\tvalidation_0-logloss:0.20926\n",
      "[3377]\tvalidation_0-logloss:0.20925\n",
      "[3378]\tvalidation_0-logloss:0.20925\n",
      "[3379]\tvalidation_0-logloss:0.20924\n",
      "[3380]\tvalidation_0-logloss:0.20924\n",
      "[3381]\tvalidation_0-logloss:0.20924\n",
      "[3382]\tvalidation_0-logloss:0.20923\n",
      "[3383]\tvalidation_0-logloss:0.20923\n",
      "[3384]\tvalidation_0-logloss:0.20923\n",
      "[3385]\tvalidation_0-logloss:0.20922\n",
      "[3386]\tvalidation_0-logloss:0.20922\n",
      "[3387]\tvalidation_0-logloss:0.20922\n",
      "[3388]\tvalidation_0-logloss:0.20921\n",
      "[3389]\tvalidation_0-logloss:0.20921\n",
      "[3390]\tvalidation_0-logloss:0.20921\n",
      "[3391]\tvalidation_0-logloss:0.20920\n",
      "[3392]\tvalidation_0-logloss:0.20920\n",
      "[3393]\tvalidation_0-logloss:0.20919\n",
      "[3394]\tvalidation_0-logloss:0.20919\n",
      "[3395]\tvalidation_0-logloss:0.20919\n",
      "[3396]\tvalidation_0-logloss:0.20919\n",
      "[3397]\tvalidation_0-logloss:0.20918\n",
      "[3398]\tvalidation_0-logloss:0.20917\n",
      "[3399]\tvalidation_0-logloss:0.20917\n",
      "[3400]\tvalidation_0-logloss:0.20917\n",
      "[3401]\tvalidation_0-logloss:0.20916\n",
      "[3402]\tvalidation_0-logloss:0.20916\n",
      "[3403]\tvalidation_0-logloss:0.20916\n",
      "[3404]\tvalidation_0-logloss:0.20915\n",
      "[3405]\tvalidation_0-logloss:0.20915\n",
      "[3406]\tvalidation_0-logloss:0.20915\n",
      "[3407]\tvalidation_0-logloss:0.20914\n",
      "[3408]\tvalidation_0-logloss:0.20914\n",
      "[3409]\tvalidation_0-logloss:0.20914\n",
      "[3410]\tvalidation_0-logloss:0.20914\n",
      "[3411]\tvalidation_0-logloss:0.20914\n",
      "[3412]\tvalidation_0-logloss:0.20913\n",
      "[3413]\tvalidation_0-logloss:0.20913\n",
      "[3414]\tvalidation_0-logloss:0.20912\n",
      "[3415]\tvalidation_0-logloss:0.20912\n",
      "[3416]\tvalidation_0-logloss:0.20912\n",
      "[3417]\tvalidation_0-logloss:0.20911\n",
      "[3418]\tvalidation_0-logloss:0.20911\n",
      "[3419]\tvalidation_0-logloss:0.20911\n",
      "[3420]\tvalidation_0-logloss:0.20910\n",
      "[3421]\tvalidation_0-logloss:0.20910\n",
      "[3422]\tvalidation_0-logloss:0.20910\n",
      "[3423]\tvalidation_0-logloss:0.20910\n",
      "[3424]\tvalidation_0-logloss:0.20910\n",
      "[3425]\tvalidation_0-logloss:0.20910\n",
      "[3426]\tvalidation_0-logloss:0.20909\n",
      "[3427]\tvalidation_0-logloss:0.20909\n",
      "[3428]\tvalidation_0-logloss:0.20909\n",
      "[3429]\tvalidation_0-logloss:0.20909\n",
      "[3430]\tvalidation_0-logloss:0.20909\n",
      "[3431]\tvalidation_0-logloss:0.20908\n",
      "[3432]\tvalidation_0-logloss:0.20908\n",
      "[3433]\tvalidation_0-logloss:0.20908\n",
      "[3434]\tvalidation_0-logloss:0.20907\n",
      "[3435]\tvalidation_0-logloss:0.20907\n",
      "[3436]\tvalidation_0-logloss:0.20906\n",
      "[3437]\tvalidation_0-logloss:0.20906\n",
      "[3438]\tvalidation_0-logloss:0.20906\n",
      "[3439]\tvalidation_0-logloss:0.20906\n",
      "[3440]\tvalidation_0-logloss:0.20905\n",
      "[3441]\tvalidation_0-logloss:0.20905\n",
      "[3442]\tvalidation_0-logloss:0.20904\n",
      "[3443]\tvalidation_0-logloss:0.20904\n",
      "[3444]\tvalidation_0-logloss:0.20903\n",
      "[3445]\tvalidation_0-logloss:0.20903\n",
      "[3446]\tvalidation_0-logloss:0.20902\n",
      "[3447]\tvalidation_0-logloss:0.20902\n",
      "[3448]\tvalidation_0-logloss:0.20902\n",
      "[3449]\tvalidation_0-logloss:0.20901\n",
      "[3450]\tvalidation_0-logloss:0.20901\n",
      "[3451]\tvalidation_0-logloss:0.20901\n",
      "[3452]\tvalidation_0-logloss:0.20901\n",
      "[3453]\tvalidation_0-logloss:0.20901\n",
      "[3454]\tvalidation_0-logloss:0.20901\n",
      "[3455]\tvalidation_0-logloss:0.20900\n",
      "[3456]\tvalidation_0-logloss:0.20900\n",
      "[3457]\tvalidation_0-logloss:0.20899\n",
      "[3458]\tvalidation_0-logloss:0.20899\n",
      "[3459]\tvalidation_0-logloss:0.20899\n",
      "[3460]\tvalidation_0-logloss:0.20898\n",
      "[3461]\tvalidation_0-logloss:0.20898\n",
      "[3462]\tvalidation_0-logloss:0.20897\n",
      "[3463]\tvalidation_0-logloss:0.20897\n",
      "[3464]\tvalidation_0-logloss:0.20897\n",
      "[3465]\tvalidation_0-logloss:0.20897\n",
      "[3466]\tvalidation_0-logloss:0.20896\n",
      "[3467]\tvalidation_0-logloss:0.20896\n",
      "[3468]\tvalidation_0-logloss:0.20896\n",
      "[3469]\tvalidation_0-logloss:0.20895\n",
      "[3470]\tvalidation_0-logloss:0.20895\n",
      "[3471]\tvalidation_0-logloss:0.20894\n",
      "[3472]\tvalidation_0-logloss:0.20894\n",
      "[3473]\tvalidation_0-logloss:0.20894\n",
      "[3474]\tvalidation_0-logloss:0.20893\n",
      "[3475]\tvalidation_0-logloss:0.20893\n",
      "[3476]\tvalidation_0-logloss:0.20892\n",
      "[3477]\tvalidation_0-logloss:0.20892\n",
      "[3478]\tvalidation_0-logloss:0.20892\n",
      "[3479]\tvalidation_0-logloss:0.20892\n",
      "[3480]\tvalidation_0-logloss:0.20891\n",
      "[3481]\tvalidation_0-logloss:0.20891\n",
      "[3482]\tvalidation_0-logloss:0.20891\n",
      "[3483]\tvalidation_0-logloss:0.20890\n",
      "[3484]\tvalidation_0-logloss:0.20890\n",
      "[3485]\tvalidation_0-logloss:0.20889\n",
      "[3486]\tvalidation_0-logloss:0.20889\n",
      "[3487]\tvalidation_0-logloss:0.20889\n",
      "[3488]\tvalidation_0-logloss:0.20888\n",
      "[3489]\tvalidation_0-logloss:0.20888\n",
      "[3490]\tvalidation_0-logloss:0.20888\n",
      "[3491]\tvalidation_0-logloss:0.20888\n",
      "[3492]\tvalidation_0-logloss:0.20887\n",
      "[3493]\tvalidation_0-logloss:0.20887\n",
      "[3494]\tvalidation_0-logloss:0.20886\n",
      "[3495]\tvalidation_0-logloss:0.20886\n",
      "[3496]\tvalidation_0-logloss:0.20885\n",
      "[3497]\tvalidation_0-logloss:0.20885\n",
      "[3498]\tvalidation_0-logloss:0.20884\n",
      "[3499]\tvalidation_0-logloss:0.20884\n",
      "[3500]\tvalidation_0-logloss:0.20884\n",
      "[3501]\tvalidation_0-logloss:0.20883\n",
      "[3502]\tvalidation_0-logloss:0.20883\n",
      "[3503]\tvalidation_0-logloss:0.20883\n",
      "[3504]\tvalidation_0-logloss:0.20882\n",
      "[3505]\tvalidation_0-logloss:0.20882\n",
      "[3506]\tvalidation_0-logloss:0.20882\n",
      "[3507]\tvalidation_0-logloss:0.20882\n",
      "[3508]\tvalidation_0-logloss:0.20881\n",
      "[3509]\tvalidation_0-logloss:0.20881\n",
      "[3510]\tvalidation_0-logloss:0.20880\n",
      "[3511]\tvalidation_0-logloss:0.20880\n",
      "[3512]\tvalidation_0-logloss:0.20880\n",
      "[3513]\tvalidation_0-logloss:0.20880\n",
      "[3514]\tvalidation_0-logloss:0.20879\n",
      "[3515]\tvalidation_0-logloss:0.20879\n",
      "[3516]\tvalidation_0-logloss:0.20879\n",
      "[3517]\tvalidation_0-logloss:0.20878\n",
      "[3518]\tvalidation_0-logloss:0.20878\n",
      "[3519]\tvalidation_0-logloss:0.20877\n",
      "[3520]\tvalidation_0-logloss:0.20877\n",
      "[3521]\tvalidation_0-logloss:0.20876\n",
      "[3522]\tvalidation_0-logloss:0.20876\n",
      "[3523]\tvalidation_0-logloss:0.20876\n",
      "[3524]\tvalidation_0-logloss:0.20875\n",
      "[3525]\tvalidation_0-logloss:0.20875\n",
      "[3526]\tvalidation_0-logloss:0.20874\n",
      "[3527]\tvalidation_0-logloss:0.20874\n",
      "[3528]\tvalidation_0-logloss:0.20874\n",
      "[3529]\tvalidation_0-logloss:0.20873\n",
      "[3530]\tvalidation_0-logloss:0.20873\n",
      "[3531]\tvalidation_0-logloss:0.20873\n",
      "[3532]\tvalidation_0-logloss:0.20872\n",
      "[3533]\tvalidation_0-logloss:0.20872\n",
      "[3534]\tvalidation_0-logloss:0.20872\n",
      "[3535]\tvalidation_0-logloss:0.20871\n",
      "[3536]\tvalidation_0-logloss:0.20871\n",
      "[3537]\tvalidation_0-logloss:0.20871\n",
      "[3538]\tvalidation_0-logloss:0.20870\n",
      "[3539]\tvalidation_0-logloss:0.20870\n",
      "[3540]\tvalidation_0-logloss:0.20870\n",
      "[3541]\tvalidation_0-logloss:0.20870\n",
      "[3542]\tvalidation_0-logloss:0.20870\n",
      "[3543]\tvalidation_0-logloss:0.20869\n",
      "[3544]\tvalidation_0-logloss:0.20869\n",
      "[3545]\tvalidation_0-logloss:0.20869\n",
      "[3546]\tvalidation_0-logloss:0.20869\n",
      "[3547]\tvalidation_0-logloss:0.20868\n",
      "[3548]\tvalidation_0-logloss:0.20868\n",
      "[3549]\tvalidation_0-logloss:0.20868\n",
      "[3550]\tvalidation_0-logloss:0.20867\n",
      "[3551]\tvalidation_0-logloss:0.20867\n",
      "[3552]\tvalidation_0-logloss:0.20866\n",
      "[3553]\tvalidation_0-logloss:0.20866\n",
      "[3554]\tvalidation_0-logloss:0.20866\n",
      "[3555]\tvalidation_0-logloss:0.20866\n",
      "[3556]\tvalidation_0-logloss:0.20865\n",
      "[3557]\tvalidation_0-logloss:0.20865\n",
      "[3558]\tvalidation_0-logloss:0.20865\n",
      "[3559]\tvalidation_0-logloss:0.20865\n",
      "[3560]\tvalidation_0-logloss:0.20864\n",
      "[3561]\tvalidation_0-logloss:0.20864\n",
      "[3562]\tvalidation_0-logloss:0.20864\n",
      "[3563]\tvalidation_0-logloss:0.20863\n",
      "[3564]\tvalidation_0-logloss:0.20863\n",
      "[3565]\tvalidation_0-logloss:0.20863\n",
      "[3566]\tvalidation_0-logloss:0.20863\n",
      "[3567]\tvalidation_0-logloss:0.20862\n",
      "[3568]\tvalidation_0-logloss:0.20862\n",
      "[3569]\tvalidation_0-logloss:0.20862\n",
      "[3570]\tvalidation_0-logloss:0.20861\n",
      "[3571]\tvalidation_0-logloss:0.20861\n",
      "[3572]\tvalidation_0-logloss:0.20861\n",
      "[3573]\tvalidation_0-logloss:0.20860\n",
      "[3574]\tvalidation_0-logloss:0.20860\n",
      "[3575]\tvalidation_0-logloss:0.20860\n",
      "[3576]\tvalidation_0-logloss:0.20860\n",
      "[3577]\tvalidation_0-logloss:0.20859\n",
      "[3578]\tvalidation_0-logloss:0.20859\n",
      "[3579]\tvalidation_0-logloss:0.20859\n",
      "[3580]\tvalidation_0-logloss:0.20859\n",
      "[3581]\tvalidation_0-logloss:0.20858\n",
      "[3582]\tvalidation_0-logloss:0.20858\n",
      "[3583]\tvalidation_0-logloss:0.20857\n",
      "[3584]\tvalidation_0-logloss:0.20857\n",
      "[3585]\tvalidation_0-logloss:0.20857\n",
      "[3586]\tvalidation_0-logloss:0.20856\n",
      "[3587]\tvalidation_0-logloss:0.20856\n",
      "[3588]\tvalidation_0-logloss:0.20855\n",
      "[3589]\tvalidation_0-logloss:0.20855\n",
      "[3590]\tvalidation_0-logloss:0.20855\n",
      "[3591]\tvalidation_0-logloss:0.20854\n",
      "[3592]\tvalidation_0-logloss:0.20854\n",
      "[3593]\tvalidation_0-logloss:0.20854\n",
      "[3594]\tvalidation_0-logloss:0.20853\n",
      "[3595]\tvalidation_0-logloss:0.20852\n",
      "[3596]\tvalidation_0-logloss:0.20852\n",
      "[3597]\tvalidation_0-logloss:0.20852\n",
      "[3598]\tvalidation_0-logloss:0.20851\n",
      "[3599]\tvalidation_0-logloss:0.20851\n",
      "[3600]\tvalidation_0-logloss:0.20851\n",
      "[3601]\tvalidation_0-logloss:0.20851\n",
      "[3602]\tvalidation_0-logloss:0.20850\n",
      "[3603]\tvalidation_0-logloss:0.20850\n",
      "[3604]\tvalidation_0-logloss:0.20850\n",
      "[3605]\tvalidation_0-logloss:0.20849\n",
      "[3606]\tvalidation_0-logloss:0.20849\n",
      "[3607]\tvalidation_0-logloss:0.20849\n",
      "[3608]\tvalidation_0-logloss:0.20849\n",
      "[3609]\tvalidation_0-logloss:0.20849\n",
      "[3610]\tvalidation_0-logloss:0.20848\n",
      "[3611]\tvalidation_0-logloss:0.20848\n",
      "[3612]\tvalidation_0-logloss:0.20848\n",
      "[3613]\tvalidation_0-logloss:0.20848\n",
      "[3614]\tvalidation_0-logloss:0.20847\n",
      "[3615]\tvalidation_0-logloss:0.20847\n",
      "[3616]\tvalidation_0-logloss:0.20847\n",
      "[3617]\tvalidation_0-logloss:0.20847\n",
      "[3618]\tvalidation_0-logloss:0.20847\n",
      "[3619]\tvalidation_0-logloss:0.20846\n",
      "[3620]\tvalidation_0-logloss:0.20846\n",
      "[3621]\tvalidation_0-logloss:0.20846\n",
      "[3622]\tvalidation_0-logloss:0.20846\n",
      "[3623]\tvalidation_0-logloss:0.20845\n",
      "[3624]\tvalidation_0-logloss:0.20845\n",
      "[3625]\tvalidation_0-logloss:0.20844\n",
      "[3626]\tvalidation_0-logloss:0.20844\n",
      "[3627]\tvalidation_0-logloss:0.20844\n",
      "[3628]\tvalidation_0-logloss:0.20843\n",
      "[3629]\tvalidation_0-logloss:0.20843\n",
      "[3630]\tvalidation_0-logloss:0.20843\n",
      "[3631]\tvalidation_0-logloss:0.20842\n",
      "[3632]\tvalidation_0-logloss:0.20841\n",
      "[3633]\tvalidation_0-logloss:0.20841\n",
      "[3634]\tvalidation_0-logloss:0.20841\n",
      "[3635]\tvalidation_0-logloss:0.20840\n",
      "[3636]\tvalidation_0-logloss:0.20840\n",
      "[3637]\tvalidation_0-logloss:0.20839\n",
      "[3638]\tvalidation_0-logloss:0.20839\n",
      "[3639]\tvalidation_0-logloss:0.20839\n",
      "[3640]\tvalidation_0-logloss:0.20838\n",
      "[3641]\tvalidation_0-logloss:0.20838\n",
      "[3642]\tvalidation_0-logloss:0.20837\n",
      "[3643]\tvalidation_0-logloss:0.20837\n",
      "[3644]\tvalidation_0-logloss:0.20837\n",
      "[3645]\tvalidation_0-logloss:0.20836\n",
      "[3646]\tvalidation_0-logloss:0.20836\n",
      "[3647]\tvalidation_0-logloss:0.20836\n",
      "[3648]\tvalidation_0-logloss:0.20835\n",
      "[3649]\tvalidation_0-logloss:0.20835\n",
      "[3650]\tvalidation_0-logloss:0.20835\n",
      "[3651]\tvalidation_0-logloss:0.20834\n",
      "[3652]\tvalidation_0-logloss:0.20834\n",
      "[3653]\tvalidation_0-logloss:0.20834\n",
      "[3654]\tvalidation_0-logloss:0.20834\n",
      "[3655]\tvalidation_0-logloss:0.20833\n",
      "[3656]\tvalidation_0-logloss:0.20833\n",
      "[3657]\tvalidation_0-logloss:0.20833\n",
      "[3658]\tvalidation_0-logloss:0.20832\n",
      "[3659]\tvalidation_0-logloss:0.20832\n",
      "[3660]\tvalidation_0-logloss:0.20832\n",
      "[3661]\tvalidation_0-logloss:0.20831\n",
      "[3662]\tvalidation_0-logloss:0.20831\n",
      "[3663]\tvalidation_0-logloss:0.20831\n",
      "[3664]\tvalidation_0-logloss:0.20831\n",
      "[3665]\tvalidation_0-logloss:0.20830\n",
      "[3666]\tvalidation_0-logloss:0.20830\n",
      "[3667]\tvalidation_0-logloss:0.20829\n",
      "[3668]\tvalidation_0-logloss:0.20829\n",
      "[3669]\tvalidation_0-logloss:0.20829\n",
      "[3670]\tvalidation_0-logloss:0.20828\n",
      "[3671]\tvalidation_0-logloss:0.20828\n",
      "[3672]\tvalidation_0-logloss:0.20828\n",
      "[3673]\tvalidation_0-logloss:0.20827\n",
      "[3674]\tvalidation_0-logloss:0.20827\n",
      "[3675]\tvalidation_0-logloss:0.20826\n",
      "[3676]\tvalidation_0-logloss:0.20826\n",
      "[3677]\tvalidation_0-logloss:0.20825\n",
      "[3678]\tvalidation_0-logloss:0.20825\n",
      "[3679]\tvalidation_0-logloss:0.20825\n",
      "[3680]\tvalidation_0-logloss:0.20824\n",
      "[3681]\tvalidation_0-logloss:0.20824\n",
      "[3682]\tvalidation_0-logloss:0.20824\n",
      "[3683]\tvalidation_0-logloss:0.20823\n",
      "[3684]\tvalidation_0-logloss:0.20823\n",
      "[3685]\tvalidation_0-logloss:0.20822\n",
      "[3686]\tvalidation_0-logloss:0.20822\n",
      "[3687]\tvalidation_0-logloss:0.20822\n",
      "[3688]\tvalidation_0-logloss:0.20821\n",
      "[3689]\tvalidation_0-logloss:0.20821\n",
      "[3690]\tvalidation_0-logloss:0.20821\n",
      "[3691]\tvalidation_0-logloss:0.20820\n",
      "[3692]\tvalidation_0-logloss:0.20820\n",
      "[3693]\tvalidation_0-logloss:0.20819\n",
      "[3694]\tvalidation_0-logloss:0.20819\n",
      "[3695]\tvalidation_0-logloss:0.20819\n",
      "[3696]\tvalidation_0-logloss:0.20818\n",
      "[3697]\tvalidation_0-logloss:0.20818\n",
      "[3698]\tvalidation_0-logloss:0.20818\n",
      "[3699]\tvalidation_0-logloss:0.20818\n",
      "[3700]\tvalidation_0-logloss:0.20817\n",
      "[3701]\tvalidation_0-logloss:0.20817\n",
      "[3702]\tvalidation_0-logloss:0.20817\n",
      "[3703]\tvalidation_0-logloss:0.20817\n",
      "[3704]\tvalidation_0-logloss:0.20816\n",
      "[3705]\tvalidation_0-logloss:0.20816\n",
      "[3706]\tvalidation_0-logloss:0.20816\n",
      "[3707]\tvalidation_0-logloss:0.20815\n",
      "[3708]\tvalidation_0-logloss:0.20815\n",
      "[3709]\tvalidation_0-logloss:0.20815\n",
      "[3710]\tvalidation_0-logloss:0.20814\n",
      "[3711]\tvalidation_0-logloss:0.20814\n",
      "[3712]\tvalidation_0-logloss:0.20814\n",
      "[3713]\tvalidation_0-logloss:0.20814\n",
      "[3714]\tvalidation_0-logloss:0.20813\n",
      "[3715]\tvalidation_0-logloss:0.20813\n",
      "[3716]\tvalidation_0-logloss:0.20813\n",
      "[3717]\tvalidation_0-logloss:0.20813\n",
      "[3718]\tvalidation_0-logloss:0.20812\n",
      "[3719]\tvalidation_0-logloss:0.20812\n",
      "[3720]\tvalidation_0-logloss:0.20811\n",
      "[3721]\tvalidation_0-logloss:0.20811\n",
      "[3722]\tvalidation_0-logloss:0.20811\n",
      "[3723]\tvalidation_0-logloss:0.20810\n",
      "[3724]\tvalidation_0-logloss:0.20810\n",
      "[3725]\tvalidation_0-logloss:0.20810\n",
      "[3726]\tvalidation_0-logloss:0.20809\n",
      "[3727]\tvalidation_0-logloss:0.20809\n",
      "[3728]\tvalidation_0-logloss:0.20808\n",
      "[3729]\tvalidation_0-logloss:0.20808\n",
      "[3730]\tvalidation_0-logloss:0.20808\n",
      "[3731]\tvalidation_0-logloss:0.20807\n",
      "[3732]\tvalidation_0-logloss:0.20807\n",
      "[3733]\tvalidation_0-logloss:0.20807\n",
      "[3734]\tvalidation_0-logloss:0.20806\n",
      "[3735]\tvalidation_0-logloss:0.20806\n",
      "[3736]\tvalidation_0-logloss:0.20805\n",
      "[3737]\tvalidation_0-logloss:0.20805\n",
      "[3738]\tvalidation_0-logloss:0.20805\n",
      "[3739]\tvalidation_0-logloss:0.20804\n",
      "[3740]\tvalidation_0-logloss:0.20804\n",
      "[3741]\tvalidation_0-logloss:0.20803\n",
      "[3742]\tvalidation_0-logloss:0.20803\n",
      "[3743]\tvalidation_0-logloss:0.20803\n",
      "[3744]\tvalidation_0-logloss:0.20802\n",
      "[3745]\tvalidation_0-logloss:0.20802\n",
      "[3746]\tvalidation_0-logloss:0.20802\n",
      "[3747]\tvalidation_0-logloss:0.20802\n",
      "[3748]\tvalidation_0-logloss:0.20801\n",
      "[3749]\tvalidation_0-logloss:0.20801\n",
      "[3750]\tvalidation_0-logloss:0.20800\n",
      "[3751]\tvalidation_0-logloss:0.20800\n",
      "[3752]\tvalidation_0-logloss:0.20799\n",
      "[3753]\tvalidation_0-logloss:0.20799\n",
      "[3754]\tvalidation_0-logloss:0.20799\n",
      "[3755]\tvalidation_0-logloss:0.20798\n",
      "[3756]\tvalidation_0-logloss:0.20798\n",
      "[3757]\tvalidation_0-logloss:0.20798\n",
      "[3758]\tvalidation_0-logloss:0.20798\n",
      "[3759]\tvalidation_0-logloss:0.20798\n",
      "[3760]\tvalidation_0-logloss:0.20797\n",
      "[3761]\tvalidation_0-logloss:0.20797\n",
      "[3762]\tvalidation_0-logloss:0.20797\n",
      "[3763]\tvalidation_0-logloss:0.20797\n",
      "[3764]\tvalidation_0-logloss:0.20796\n",
      "[3765]\tvalidation_0-logloss:0.20796\n",
      "[3766]\tvalidation_0-logloss:0.20796\n",
      "[3767]\tvalidation_0-logloss:0.20795\n",
      "[3768]\tvalidation_0-logloss:0.20795\n",
      "[3769]\tvalidation_0-logloss:0.20794\n",
      "[3770]\tvalidation_0-logloss:0.20794\n",
      "[3771]\tvalidation_0-logloss:0.20794\n",
      "[3772]\tvalidation_0-logloss:0.20793\n",
      "[3773]\tvalidation_0-logloss:0.20793\n",
      "[3774]\tvalidation_0-logloss:0.20793\n",
      "[3775]\tvalidation_0-logloss:0.20792\n",
      "[3776]\tvalidation_0-logloss:0.20792\n",
      "[3777]\tvalidation_0-logloss:0.20791\n",
      "[3778]\tvalidation_0-logloss:0.20791\n",
      "[3779]\tvalidation_0-logloss:0.20791\n",
      "[3780]\tvalidation_0-logloss:0.20790\n",
      "[3781]\tvalidation_0-logloss:0.20790\n",
      "[3782]\tvalidation_0-logloss:0.20790\n",
      "[3783]\tvalidation_0-logloss:0.20790\n",
      "[3784]\tvalidation_0-logloss:0.20789\n",
      "[3785]\tvalidation_0-logloss:0.20789\n",
      "[3786]\tvalidation_0-logloss:0.20788\n",
      "[3787]\tvalidation_0-logloss:0.20788\n",
      "[3788]\tvalidation_0-logloss:0.20788\n",
      "[3789]\tvalidation_0-logloss:0.20787\n",
      "[3790]\tvalidation_0-logloss:0.20787\n",
      "[3791]\tvalidation_0-logloss:0.20786\n",
      "[3792]\tvalidation_0-logloss:0.20786\n",
      "[3793]\tvalidation_0-logloss:0.20786\n",
      "[3794]\tvalidation_0-logloss:0.20785\n",
      "[3795]\tvalidation_0-logloss:0.20785\n",
      "[3796]\tvalidation_0-logloss:0.20785\n",
      "[3797]\tvalidation_0-logloss:0.20784\n",
      "[3798]\tvalidation_0-logloss:0.20784\n",
      "[3799]\tvalidation_0-logloss:0.20784\n",
      "[3800]\tvalidation_0-logloss:0.20783\n",
      "[3801]\tvalidation_0-logloss:0.20783\n",
      "[3802]\tvalidation_0-logloss:0.20783\n",
      "[3803]\tvalidation_0-logloss:0.20782\n",
      "[3804]\tvalidation_0-logloss:0.20782\n",
      "[3805]\tvalidation_0-logloss:0.20782\n",
      "[3806]\tvalidation_0-logloss:0.20781\n",
      "[3807]\tvalidation_0-logloss:0.20781\n",
      "[3808]\tvalidation_0-logloss:0.20781\n",
      "[3809]\tvalidation_0-logloss:0.20780\n",
      "[3810]\tvalidation_0-logloss:0.20780\n",
      "[3811]\tvalidation_0-logloss:0.20780\n",
      "[3812]\tvalidation_0-logloss:0.20780\n",
      "[3813]\tvalidation_0-logloss:0.20779\n",
      "[3814]\tvalidation_0-logloss:0.20779\n",
      "[3815]\tvalidation_0-logloss:0.20778\n",
      "[3816]\tvalidation_0-logloss:0.20778\n",
      "[3817]\tvalidation_0-logloss:0.20778\n",
      "[3818]\tvalidation_0-logloss:0.20777\n",
      "[3819]\tvalidation_0-logloss:0.20777\n",
      "[3820]\tvalidation_0-logloss:0.20777\n",
      "[3821]\tvalidation_0-logloss:0.20777\n",
      "[3822]\tvalidation_0-logloss:0.20776\n",
      "[3823]\tvalidation_0-logloss:0.20776\n",
      "[3824]\tvalidation_0-logloss:0.20775\n",
      "[3825]\tvalidation_0-logloss:0.20775\n",
      "[3826]\tvalidation_0-logloss:0.20775\n",
      "[3827]\tvalidation_0-logloss:0.20774\n",
      "[3828]\tvalidation_0-logloss:0.20774\n",
      "[3829]\tvalidation_0-logloss:0.20773\n",
      "[3830]\tvalidation_0-logloss:0.20773\n",
      "[3831]\tvalidation_0-logloss:0.20772\n",
      "[3832]\tvalidation_0-logloss:0.20772\n",
      "[3833]\tvalidation_0-logloss:0.20771\n",
      "[3834]\tvalidation_0-logloss:0.20771\n",
      "[3835]\tvalidation_0-logloss:0.20771\n",
      "[3836]\tvalidation_0-logloss:0.20771\n",
      "[3837]\tvalidation_0-logloss:0.20771\n",
      "[3838]\tvalidation_0-logloss:0.20770\n",
      "[3839]\tvalidation_0-logloss:0.20770\n",
      "[3840]\tvalidation_0-logloss:0.20770\n",
      "[3841]\tvalidation_0-logloss:0.20770\n",
      "[3842]\tvalidation_0-logloss:0.20769\n",
      "[3843]\tvalidation_0-logloss:0.20769\n",
      "[3844]\tvalidation_0-logloss:0.20769\n",
      "[3845]\tvalidation_0-logloss:0.20768\n",
      "[3846]\tvalidation_0-logloss:0.20768\n",
      "[3847]\tvalidation_0-logloss:0.20768\n",
      "[3848]\tvalidation_0-logloss:0.20767\n",
      "[3849]\tvalidation_0-logloss:0.20767\n",
      "[3850]\tvalidation_0-logloss:0.20767\n",
      "[3851]\tvalidation_0-logloss:0.20767\n",
      "[3852]\tvalidation_0-logloss:0.20767\n",
      "[3853]\tvalidation_0-logloss:0.20766\n",
      "[3854]\tvalidation_0-logloss:0.20766\n",
      "[3855]\tvalidation_0-logloss:0.20766\n",
      "[3856]\tvalidation_0-logloss:0.20766\n",
      "[3857]\tvalidation_0-logloss:0.20766\n",
      "[3858]\tvalidation_0-logloss:0.20765\n",
      "[3859]\tvalidation_0-logloss:0.20765\n",
      "[3860]\tvalidation_0-logloss:0.20765\n",
      "[3861]\tvalidation_0-logloss:0.20764\n",
      "[3862]\tvalidation_0-logloss:0.20764\n",
      "[3863]\tvalidation_0-logloss:0.20764\n",
      "[3864]\tvalidation_0-logloss:0.20763\n",
      "[3865]\tvalidation_0-logloss:0.20763\n",
      "[3866]\tvalidation_0-logloss:0.20763\n",
      "[3867]\tvalidation_0-logloss:0.20762\n",
      "[3868]\tvalidation_0-logloss:0.20762\n",
      "[3869]\tvalidation_0-logloss:0.20762\n",
      "[3870]\tvalidation_0-logloss:0.20761\n",
      "[3871]\tvalidation_0-logloss:0.20761\n",
      "[3872]\tvalidation_0-logloss:0.20760\n",
      "[3873]\tvalidation_0-logloss:0.20760\n",
      "[3874]\tvalidation_0-logloss:0.20760\n",
      "[3875]\tvalidation_0-logloss:0.20759\n",
      "[3876]\tvalidation_0-logloss:0.20759\n",
      "[3877]\tvalidation_0-logloss:0.20759\n",
      "[3878]\tvalidation_0-logloss:0.20758\n",
      "[3879]\tvalidation_0-logloss:0.20758\n",
      "[3880]\tvalidation_0-logloss:0.20758\n",
      "[3881]\tvalidation_0-logloss:0.20758\n",
      "[3882]\tvalidation_0-logloss:0.20757\n",
      "[3883]\tvalidation_0-logloss:0.20757\n",
      "[3884]\tvalidation_0-logloss:0.20756\n",
      "[3885]\tvalidation_0-logloss:0.20756\n",
      "[3886]\tvalidation_0-logloss:0.20756\n",
      "[3887]\tvalidation_0-logloss:0.20755\n",
      "[3888]\tvalidation_0-logloss:0.20755\n",
      "[3889]\tvalidation_0-logloss:0.20755\n",
      "[3890]\tvalidation_0-logloss:0.20754\n",
      "[3891]\tvalidation_0-logloss:0.20754\n",
      "[3892]\tvalidation_0-logloss:0.20754\n",
      "[3893]\tvalidation_0-logloss:0.20753\n",
      "[3894]\tvalidation_0-logloss:0.20753\n",
      "[3895]\tvalidation_0-logloss:0.20752\n",
      "[3896]\tvalidation_0-logloss:0.20752\n",
      "[3897]\tvalidation_0-logloss:0.20752\n",
      "[3898]\tvalidation_0-logloss:0.20752\n",
      "[3899]\tvalidation_0-logloss:0.20752\n",
      "[3900]\tvalidation_0-logloss:0.20751\n",
      "[3901]\tvalidation_0-logloss:0.20751\n",
      "[3902]\tvalidation_0-logloss:0.20751\n",
      "[3903]\tvalidation_0-logloss:0.20751\n",
      "[3904]\tvalidation_0-logloss:0.20750\n",
      "[3905]\tvalidation_0-logloss:0.20750\n",
      "[3906]\tvalidation_0-logloss:0.20749\n",
      "[3907]\tvalidation_0-logloss:0.20749\n",
      "[3908]\tvalidation_0-logloss:0.20749\n",
      "[3909]\tvalidation_0-logloss:0.20749\n",
      "[3910]\tvalidation_0-logloss:0.20749\n",
      "[3911]\tvalidation_0-logloss:0.20748\n",
      "[3912]\tvalidation_0-logloss:0.20748\n",
      "[3913]\tvalidation_0-logloss:0.20748\n",
      "[3914]\tvalidation_0-logloss:0.20747\n",
      "[3915]\tvalidation_0-logloss:0.20747\n",
      "[3916]\tvalidation_0-logloss:0.20746\n",
      "[3917]\tvalidation_0-logloss:0.20746\n",
      "[3918]\tvalidation_0-logloss:0.20746\n",
      "[3919]\tvalidation_0-logloss:0.20745\n",
      "[3920]\tvalidation_0-logloss:0.20745\n",
      "[3921]\tvalidation_0-logloss:0.20745\n",
      "[3922]\tvalidation_0-logloss:0.20744\n",
      "[3923]\tvalidation_0-logloss:0.20744\n",
      "[3924]\tvalidation_0-logloss:0.20744\n",
      "[3925]\tvalidation_0-logloss:0.20743\n",
      "[3926]\tvalidation_0-logloss:0.20743\n",
      "[3927]\tvalidation_0-logloss:0.20742\n",
      "[3928]\tvalidation_0-logloss:0.20742\n",
      "[3929]\tvalidation_0-logloss:0.20742\n",
      "[3930]\tvalidation_0-logloss:0.20741\n",
      "[3931]\tvalidation_0-logloss:0.20741\n",
      "[3932]\tvalidation_0-logloss:0.20740\n",
      "[3933]\tvalidation_0-logloss:0.20740\n",
      "[3934]\tvalidation_0-logloss:0.20740\n",
      "[3935]\tvalidation_0-logloss:0.20740\n",
      "[3936]\tvalidation_0-logloss:0.20739\n",
      "[3937]\tvalidation_0-logloss:0.20739\n",
      "[3938]\tvalidation_0-logloss:0.20738\n",
      "[3939]\tvalidation_0-logloss:0.20738\n",
      "[3940]\tvalidation_0-logloss:0.20738\n",
      "[3941]\tvalidation_0-logloss:0.20737\n",
      "[3942]\tvalidation_0-logloss:0.20737\n",
      "[3943]\tvalidation_0-logloss:0.20736\n",
      "[3944]\tvalidation_0-logloss:0.20736\n",
      "[3945]\tvalidation_0-logloss:0.20736\n",
      "[3946]\tvalidation_0-logloss:0.20735\n",
      "[3947]\tvalidation_0-logloss:0.20735\n",
      "[3948]\tvalidation_0-logloss:0.20734\n",
      "[3949]\tvalidation_0-logloss:0.20734\n",
      "[3950]\tvalidation_0-logloss:0.20734\n",
      "[3951]\tvalidation_0-logloss:0.20734\n",
      "[3952]\tvalidation_0-logloss:0.20733\n",
      "[3953]\tvalidation_0-logloss:0.20733\n",
      "[3954]\tvalidation_0-logloss:0.20732\n",
      "[3955]\tvalidation_0-logloss:0.20732\n",
      "[3956]\tvalidation_0-logloss:0.20732\n",
      "[3957]\tvalidation_0-logloss:0.20731\n",
      "[3958]\tvalidation_0-logloss:0.20731\n",
      "[3959]\tvalidation_0-logloss:0.20730\n",
      "[3960]\tvalidation_0-logloss:0.20730\n",
      "[3961]\tvalidation_0-logloss:0.20730\n",
      "[3962]\tvalidation_0-logloss:0.20729\n",
      "[3963]\tvalidation_0-logloss:0.20729\n",
      "[3964]\tvalidation_0-logloss:0.20728\n",
      "[3965]\tvalidation_0-logloss:0.20728\n",
      "[3966]\tvalidation_0-logloss:0.20728\n",
      "[3967]\tvalidation_0-logloss:0.20727\n",
      "[3968]\tvalidation_0-logloss:0.20727\n",
      "[3969]\tvalidation_0-logloss:0.20727\n",
      "[3970]\tvalidation_0-logloss:0.20726\n",
      "[3971]\tvalidation_0-logloss:0.20726\n",
      "[3972]\tvalidation_0-logloss:0.20725\n",
      "[3973]\tvalidation_0-logloss:0.20725\n",
      "[3974]\tvalidation_0-logloss:0.20724\n",
      "[3975]\tvalidation_0-logloss:0.20724\n",
      "[3976]\tvalidation_0-logloss:0.20723\n",
      "[3977]\tvalidation_0-logloss:0.20723\n",
      "[3978]\tvalidation_0-logloss:0.20723\n",
      "[3979]\tvalidation_0-logloss:0.20723\n",
      "[3980]\tvalidation_0-logloss:0.20722\n",
      "[3981]\tvalidation_0-logloss:0.20721\n",
      "[3982]\tvalidation_0-logloss:0.20721\n",
      "[3983]\tvalidation_0-logloss:0.20721\n",
      "[3984]\tvalidation_0-logloss:0.20721\n",
      "[3985]\tvalidation_0-logloss:0.20721\n",
      "[3986]\tvalidation_0-logloss:0.20720\n",
      "[3987]\tvalidation_0-logloss:0.20720\n",
      "[3988]\tvalidation_0-logloss:0.20719\n",
      "[3989]\tvalidation_0-logloss:0.20719\n",
      "[3990]\tvalidation_0-logloss:0.20718\n",
      "[3991]\tvalidation_0-logloss:0.20718\n",
      "[3992]\tvalidation_0-logloss:0.20718\n",
      "[3993]\tvalidation_0-logloss:0.20717\n",
      "[3994]\tvalidation_0-logloss:0.20717\n",
      "[3995]\tvalidation_0-logloss:0.20717\n",
      "[3996]\tvalidation_0-logloss:0.20717\n",
      "[3997]\tvalidation_0-logloss:0.20717\n",
      "[3998]\tvalidation_0-logloss:0.20716\n",
      "[3999]\tvalidation_0-logloss:0.20716\n",
      "[4000]\tvalidation_0-logloss:0.20715\n",
      "[4001]\tvalidation_0-logloss:0.20715\n",
      "[4002]\tvalidation_0-logloss:0.20715\n",
      "[4003]\tvalidation_0-logloss:0.20714\n",
      "[4004]\tvalidation_0-logloss:0.20714\n",
      "[4005]\tvalidation_0-logloss:0.20713\n",
      "[4006]\tvalidation_0-logloss:0.20713\n",
      "[4007]\tvalidation_0-logloss:0.20712\n",
      "[4008]\tvalidation_0-logloss:0.20712\n",
      "[4009]\tvalidation_0-logloss:0.20712\n",
      "[4010]\tvalidation_0-logloss:0.20711\n",
      "[4011]\tvalidation_0-logloss:0.20710\n",
      "[4012]\tvalidation_0-logloss:0.20710\n",
      "[4013]\tvalidation_0-logloss:0.20710\n",
      "[4014]\tvalidation_0-logloss:0.20710\n",
      "[4015]\tvalidation_0-logloss:0.20709\n",
      "[4016]\tvalidation_0-logloss:0.20709\n",
      "[4017]\tvalidation_0-logloss:0.20708\n",
      "[4018]\tvalidation_0-logloss:0.20708\n",
      "[4019]\tvalidation_0-logloss:0.20707\n",
      "[4020]\tvalidation_0-logloss:0.20707\n",
      "[4021]\tvalidation_0-logloss:0.20707\n",
      "[4022]\tvalidation_0-logloss:0.20706\n",
      "[4023]\tvalidation_0-logloss:0.20706\n",
      "[4024]\tvalidation_0-logloss:0.20706\n",
      "[4025]\tvalidation_0-logloss:0.20705\n",
      "[4026]\tvalidation_0-logloss:0.20705\n",
      "[4027]\tvalidation_0-logloss:0.20704\n",
      "[4028]\tvalidation_0-logloss:0.20704\n",
      "[4029]\tvalidation_0-logloss:0.20704\n",
      "[4030]\tvalidation_0-logloss:0.20703\n",
      "[4031]\tvalidation_0-logloss:0.20703\n",
      "[4032]\tvalidation_0-logloss:0.20703\n",
      "[4033]\tvalidation_0-logloss:0.20703\n",
      "[4034]\tvalidation_0-logloss:0.20702\n",
      "[4035]\tvalidation_0-logloss:0.20702\n",
      "[4036]\tvalidation_0-logloss:0.20702\n",
      "[4037]\tvalidation_0-logloss:0.20701\n",
      "[4038]\tvalidation_0-logloss:0.20701\n",
      "[4039]\tvalidation_0-logloss:0.20701\n",
      "[4040]\tvalidation_0-logloss:0.20700\n",
      "[4041]\tvalidation_0-logloss:0.20700\n",
      "[4042]\tvalidation_0-logloss:0.20700\n",
      "[4043]\tvalidation_0-logloss:0.20700\n",
      "[4044]\tvalidation_0-logloss:0.20699\n",
      "[4045]\tvalidation_0-logloss:0.20699\n",
      "[4046]\tvalidation_0-logloss:0.20699\n",
      "[4047]\tvalidation_0-logloss:0.20699\n",
      "[4048]\tvalidation_0-logloss:0.20698\n",
      "[4049]\tvalidation_0-logloss:0.20698\n",
      "[4050]\tvalidation_0-logloss:0.20698\n",
      "[4051]\tvalidation_0-logloss:0.20697\n",
      "[4052]\tvalidation_0-logloss:0.20697\n",
      "[4053]\tvalidation_0-logloss:0.20697\n",
      "[4054]\tvalidation_0-logloss:0.20696\n",
      "[4055]\tvalidation_0-logloss:0.20696\n",
      "[4056]\tvalidation_0-logloss:0.20696\n",
      "[4057]\tvalidation_0-logloss:0.20695\n",
      "[4058]\tvalidation_0-logloss:0.20695\n",
      "[4059]\tvalidation_0-logloss:0.20694\n",
      "[4060]\tvalidation_0-logloss:0.20694\n",
      "[4061]\tvalidation_0-logloss:0.20694\n",
      "[4062]\tvalidation_0-logloss:0.20694\n",
      "[4063]\tvalidation_0-logloss:0.20693\n",
      "[4064]\tvalidation_0-logloss:0.20693\n",
      "[4065]\tvalidation_0-logloss:0.20692\n",
      "[4066]\tvalidation_0-logloss:0.20692\n",
      "[4067]\tvalidation_0-logloss:0.20692\n",
      "[4068]\tvalidation_0-logloss:0.20691\n",
      "[4069]\tvalidation_0-logloss:0.20691\n",
      "[4070]\tvalidation_0-logloss:0.20691\n",
      "[4071]\tvalidation_0-logloss:0.20690\n",
      "[4072]\tvalidation_0-logloss:0.20690\n",
      "[4073]\tvalidation_0-logloss:0.20690\n",
      "[4074]\tvalidation_0-logloss:0.20689\n",
      "[4075]\tvalidation_0-logloss:0.20689\n",
      "[4076]\tvalidation_0-logloss:0.20689\n",
      "[4077]\tvalidation_0-logloss:0.20688\n",
      "[4078]\tvalidation_0-logloss:0.20688\n",
      "[4079]\tvalidation_0-logloss:0.20688\n",
      "[4080]\tvalidation_0-logloss:0.20688\n",
      "[4081]\tvalidation_0-logloss:0.20688\n",
      "[4082]\tvalidation_0-logloss:0.20687\n",
      "[4083]\tvalidation_0-logloss:0.20687\n",
      "[4084]\tvalidation_0-logloss:0.20687\n",
      "[4085]\tvalidation_0-logloss:0.20687\n",
      "[4086]\tvalidation_0-logloss:0.20686\n",
      "[4087]\tvalidation_0-logloss:0.20686\n",
      "[4088]\tvalidation_0-logloss:0.20686\n",
      "[4089]\tvalidation_0-logloss:0.20685\n",
      "[4090]\tvalidation_0-logloss:0.20685\n",
      "[4091]\tvalidation_0-logloss:0.20685\n",
      "[4092]\tvalidation_0-logloss:0.20684\n",
      "[4093]\tvalidation_0-logloss:0.20684\n",
      "[4094]\tvalidation_0-logloss:0.20684\n",
      "[4095]\tvalidation_0-logloss:0.20683\n",
      "[4096]\tvalidation_0-logloss:0.20683\n",
      "[4097]\tvalidation_0-logloss:0.20683\n",
      "[4098]\tvalidation_0-logloss:0.20682\n",
      "[4099]\tvalidation_0-logloss:0.20682\n",
      "[4100]\tvalidation_0-logloss:0.20682\n",
      "[4101]\tvalidation_0-logloss:0.20681\n",
      "[4102]\tvalidation_0-logloss:0.20681\n",
      "[4103]\tvalidation_0-logloss:0.20681\n",
      "[4104]\tvalidation_0-logloss:0.20680\n",
      "[4105]\tvalidation_0-logloss:0.20680\n",
      "[4106]\tvalidation_0-logloss:0.20680\n",
      "[4107]\tvalidation_0-logloss:0.20680\n",
      "[4108]\tvalidation_0-logloss:0.20679\n",
      "[4109]\tvalidation_0-logloss:0.20679\n",
      "[4110]\tvalidation_0-logloss:0.20678\n",
      "[4111]\tvalidation_0-logloss:0.20678\n",
      "[4112]\tvalidation_0-logloss:0.20678\n",
      "[4113]\tvalidation_0-logloss:0.20677\n",
      "[4114]\tvalidation_0-logloss:0.20677\n",
      "[4115]\tvalidation_0-logloss:0.20676\n",
      "[4116]\tvalidation_0-logloss:0.20676\n",
      "[4117]\tvalidation_0-logloss:0.20676\n",
      "[4118]\tvalidation_0-logloss:0.20675\n",
      "[4119]\tvalidation_0-logloss:0.20675\n",
      "[4120]\tvalidation_0-logloss:0.20674\n",
      "[4121]\tvalidation_0-logloss:0.20674\n",
      "[4122]\tvalidation_0-logloss:0.20674\n",
      "[4123]\tvalidation_0-logloss:0.20673\n",
      "[4124]\tvalidation_0-logloss:0.20673\n",
      "[4125]\tvalidation_0-logloss:0.20672\n",
      "[4126]\tvalidation_0-logloss:0.20672\n",
      "[4127]\tvalidation_0-logloss:0.20672\n",
      "[4128]\tvalidation_0-logloss:0.20671\n",
      "[4129]\tvalidation_0-logloss:0.20671\n",
      "[4130]\tvalidation_0-logloss:0.20671\n",
      "[4131]\tvalidation_0-logloss:0.20670\n",
      "[4132]\tvalidation_0-logloss:0.20670\n",
      "[4133]\tvalidation_0-logloss:0.20670\n",
      "[4134]\tvalidation_0-logloss:0.20669\n",
      "[4135]\tvalidation_0-logloss:0.20669\n",
      "[4136]\tvalidation_0-logloss:0.20669\n",
      "[4137]\tvalidation_0-logloss:0.20668\n",
      "[4138]\tvalidation_0-logloss:0.20668\n",
      "[4139]\tvalidation_0-logloss:0.20668\n",
      "[4140]\tvalidation_0-logloss:0.20667\n",
      "[4141]\tvalidation_0-logloss:0.20667\n",
      "[4142]\tvalidation_0-logloss:0.20667\n",
      "[4143]\tvalidation_0-logloss:0.20666\n",
      "[4144]\tvalidation_0-logloss:0.20666\n",
      "[4145]\tvalidation_0-logloss:0.20666\n",
      "[4146]\tvalidation_0-logloss:0.20666\n",
      "[4147]\tvalidation_0-logloss:0.20666\n",
      "[4148]\tvalidation_0-logloss:0.20665\n",
      "[4149]\tvalidation_0-logloss:0.20665\n",
      "[4150]\tvalidation_0-logloss:0.20665\n",
      "[4151]\tvalidation_0-logloss:0.20664\n",
      "[4152]\tvalidation_0-logloss:0.20664\n",
      "[4153]\tvalidation_0-logloss:0.20663\n",
      "[4154]\tvalidation_0-logloss:0.20663\n",
      "[4155]\tvalidation_0-logloss:0.20663\n",
      "[4156]\tvalidation_0-logloss:0.20663\n",
      "[4157]\tvalidation_0-logloss:0.20662\n",
      "[4158]\tvalidation_0-logloss:0.20662\n",
      "[4159]\tvalidation_0-logloss:0.20662\n",
      "[4160]\tvalidation_0-logloss:0.20662\n",
      "[4161]\tvalidation_0-logloss:0.20662\n",
      "[4162]\tvalidation_0-logloss:0.20662\n",
      "[4163]\tvalidation_0-logloss:0.20661\n",
      "[4164]\tvalidation_0-logloss:0.20661\n",
      "[4165]\tvalidation_0-logloss:0.20661\n",
      "[4166]\tvalidation_0-logloss:0.20660\n",
      "[4167]\tvalidation_0-logloss:0.20660\n",
      "[4168]\tvalidation_0-logloss:0.20660\n",
      "[4169]\tvalidation_0-logloss:0.20659\n",
      "[4170]\tvalidation_0-logloss:0.20659\n",
      "[4171]\tvalidation_0-logloss:0.20659\n",
      "[4172]\tvalidation_0-logloss:0.20658\n",
      "[4173]\tvalidation_0-logloss:0.20658\n",
      "[4174]\tvalidation_0-logloss:0.20658\n",
      "[4175]\tvalidation_0-logloss:0.20658\n",
      "[4176]\tvalidation_0-logloss:0.20658\n",
      "[4177]\tvalidation_0-logloss:0.20657\n",
      "[4178]\tvalidation_0-logloss:0.20657\n",
      "[4179]\tvalidation_0-logloss:0.20657\n",
      "[4180]\tvalidation_0-logloss:0.20656\n",
      "[4181]\tvalidation_0-logloss:0.20656\n",
      "[4182]\tvalidation_0-logloss:0.20656\n",
      "[4183]\tvalidation_0-logloss:0.20655\n",
      "[4184]\tvalidation_0-logloss:0.20655\n",
      "[4185]\tvalidation_0-logloss:0.20654\n",
      "[4186]\tvalidation_0-logloss:0.20654\n",
      "[4187]\tvalidation_0-logloss:0.20654\n",
      "[4188]\tvalidation_0-logloss:0.20654\n",
      "[4189]\tvalidation_0-logloss:0.20653\n",
      "[4190]\tvalidation_0-logloss:0.20653\n",
      "[4191]\tvalidation_0-logloss:0.20653\n",
      "[4192]\tvalidation_0-logloss:0.20652\n",
      "[4193]\tvalidation_0-logloss:0.20652\n",
      "[4194]\tvalidation_0-logloss:0.20652\n",
      "[4195]\tvalidation_0-logloss:0.20651\n",
      "[4196]\tvalidation_0-logloss:0.20651\n",
      "[4197]\tvalidation_0-logloss:0.20651\n",
      "[4198]\tvalidation_0-logloss:0.20651\n",
      "[4199]\tvalidation_0-logloss:0.20651\n",
      "[4200]\tvalidation_0-logloss:0.20650\n",
      "[4201]\tvalidation_0-logloss:0.20650\n",
      "[4202]\tvalidation_0-logloss:0.20650\n",
      "[4203]\tvalidation_0-logloss:0.20650\n",
      "[4204]\tvalidation_0-logloss:0.20650\n",
      "[4205]\tvalidation_0-logloss:0.20650\n",
      "[4206]\tvalidation_0-logloss:0.20649\n",
      "[4207]\tvalidation_0-logloss:0.20649\n",
      "[4208]\tvalidation_0-logloss:0.20649\n",
      "[4209]\tvalidation_0-logloss:0.20649\n",
      "[4210]\tvalidation_0-logloss:0.20649\n",
      "[4211]\tvalidation_0-logloss:0.20649\n",
      "[4212]\tvalidation_0-logloss:0.20649\n",
      "[4213]\tvalidation_0-logloss:0.20648\n",
      "[4214]\tvalidation_0-logloss:0.20648\n",
      "[4215]\tvalidation_0-logloss:0.20648\n",
      "[4216]\tvalidation_0-logloss:0.20647\n",
      "[4217]\tvalidation_0-logloss:0.20647\n",
      "[4218]\tvalidation_0-logloss:0.20647\n",
      "[4219]\tvalidation_0-logloss:0.20647\n",
      "[4220]\tvalidation_0-logloss:0.20646\n",
      "[4221]\tvalidation_0-logloss:0.20646\n",
      "[4222]\tvalidation_0-logloss:0.20646\n",
      "[4223]\tvalidation_0-logloss:0.20646\n",
      "[4224]\tvalidation_0-logloss:0.20645\n",
      "[4225]\tvalidation_0-logloss:0.20645\n",
      "[4226]\tvalidation_0-logloss:0.20645\n",
      "[4227]\tvalidation_0-logloss:0.20645\n",
      "[4228]\tvalidation_0-logloss:0.20644\n",
      "[4229]\tvalidation_0-logloss:0.20644\n",
      "[4230]\tvalidation_0-logloss:0.20644\n",
      "[4231]\tvalidation_0-logloss:0.20643\n",
      "[4232]\tvalidation_0-logloss:0.20643\n",
      "[4233]\tvalidation_0-logloss:0.20642\n",
      "[4234]\tvalidation_0-logloss:0.20642\n",
      "[4235]\tvalidation_0-logloss:0.20642\n",
      "[4236]\tvalidation_0-logloss:0.20642\n",
      "[4237]\tvalidation_0-logloss:0.20641\n",
      "[4238]\tvalidation_0-logloss:0.20641\n",
      "[4239]\tvalidation_0-logloss:0.20641\n",
      "[4240]\tvalidation_0-logloss:0.20641\n",
      "[4241]\tvalidation_0-logloss:0.20641\n",
      "[4242]\tvalidation_0-logloss:0.20640\n",
      "[4243]\tvalidation_0-logloss:0.20640\n",
      "[4244]\tvalidation_0-logloss:0.20640\n",
      "[4245]\tvalidation_0-logloss:0.20639\n",
      "[4246]\tvalidation_0-logloss:0.20639\n",
      "[4247]\tvalidation_0-logloss:0.20639\n",
      "[4248]\tvalidation_0-logloss:0.20639\n",
      "[4249]\tvalidation_0-logloss:0.20639\n",
      "[4250]\tvalidation_0-logloss:0.20638\n",
      "[4251]\tvalidation_0-logloss:0.20638\n",
      "[4252]\tvalidation_0-logloss:0.20638\n",
      "[4253]\tvalidation_0-logloss:0.20638\n",
      "[4254]\tvalidation_0-logloss:0.20637\n",
      "[4255]\tvalidation_0-logloss:0.20637\n",
      "[4256]\tvalidation_0-logloss:0.20637\n",
      "[4257]\tvalidation_0-logloss:0.20636\n",
      "[4258]\tvalidation_0-logloss:0.20636\n",
      "[4259]\tvalidation_0-logloss:0.20636\n",
      "[4260]\tvalidation_0-logloss:0.20635\n",
      "[4261]\tvalidation_0-logloss:0.20635\n",
      "[4262]\tvalidation_0-logloss:0.20635\n",
      "[4263]\tvalidation_0-logloss:0.20634\n",
      "[4264]\tvalidation_0-logloss:0.20634\n",
      "[4265]\tvalidation_0-logloss:0.20634\n",
      "[4266]\tvalidation_0-logloss:0.20633\n",
      "[4267]\tvalidation_0-logloss:0.20633\n",
      "[4268]\tvalidation_0-logloss:0.20632\n",
      "[4269]\tvalidation_0-logloss:0.20632\n",
      "[4270]\tvalidation_0-logloss:0.20632\n",
      "[4271]\tvalidation_0-logloss:0.20631\n",
      "[4272]\tvalidation_0-logloss:0.20631\n",
      "[4273]\tvalidation_0-logloss:0.20631\n",
      "[4274]\tvalidation_0-logloss:0.20631\n",
      "[4275]\tvalidation_0-logloss:0.20630\n",
      "[4276]\tvalidation_0-logloss:0.20630\n",
      "[4277]\tvalidation_0-logloss:0.20630\n",
      "[4278]\tvalidation_0-logloss:0.20629\n",
      "[4279]\tvalidation_0-logloss:0.20629\n",
      "[4280]\tvalidation_0-logloss:0.20629\n",
      "[4281]\tvalidation_0-logloss:0.20629\n",
      "[4282]\tvalidation_0-logloss:0.20628\n",
      "[4283]\tvalidation_0-logloss:0.20628\n",
      "[4284]\tvalidation_0-logloss:0.20628\n",
      "[4285]\tvalidation_0-logloss:0.20628\n",
      "[4286]\tvalidation_0-logloss:0.20627\n",
      "[4287]\tvalidation_0-logloss:0.20627\n",
      "[4288]\tvalidation_0-logloss:0.20627\n",
      "[4289]\tvalidation_0-logloss:0.20626\n",
      "[4290]\tvalidation_0-logloss:0.20626\n",
      "[4291]\tvalidation_0-logloss:0.20626\n",
      "[4292]\tvalidation_0-logloss:0.20625\n",
      "[4293]\tvalidation_0-logloss:0.20625\n",
      "[4294]\tvalidation_0-logloss:0.20625\n",
      "[4295]\tvalidation_0-logloss:0.20624\n",
      "[4296]\tvalidation_0-logloss:0.20624\n",
      "[4297]\tvalidation_0-logloss:0.20624\n",
      "[4298]\tvalidation_0-logloss:0.20624\n",
      "[4299]\tvalidation_0-logloss:0.20623\n",
      "[4300]\tvalidation_0-logloss:0.20623\n",
      "[4301]\tvalidation_0-logloss:0.20623\n",
      "[4302]\tvalidation_0-logloss:0.20623\n",
      "[4303]\tvalidation_0-logloss:0.20622\n",
      "[4304]\tvalidation_0-logloss:0.20622\n",
      "[4305]\tvalidation_0-logloss:0.20621\n",
      "[4306]\tvalidation_0-logloss:0.20621\n",
      "[4307]\tvalidation_0-logloss:0.20621\n",
      "[4308]\tvalidation_0-logloss:0.20620\n",
      "[4309]\tvalidation_0-logloss:0.20620\n",
      "[4310]\tvalidation_0-logloss:0.20620\n",
      "[4311]\tvalidation_0-logloss:0.20619\n",
      "[4312]\tvalidation_0-logloss:0.20619\n",
      "[4313]\tvalidation_0-logloss:0.20619\n",
      "[4314]\tvalidation_0-logloss:0.20618\n",
      "[4315]\tvalidation_0-logloss:0.20618\n",
      "[4316]\tvalidation_0-logloss:0.20618\n",
      "[4317]\tvalidation_0-logloss:0.20617\n",
      "[4318]\tvalidation_0-logloss:0.20617\n",
      "[4319]\tvalidation_0-logloss:0.20617\n",
      "[4320]\tvalidation_0-logloss:0.20616\n",
      "[4321]\tvalidation_0-logloss:0.20616\n",
      "[4322]\tvalidation_0-logloss:0.20616\n",
      "[4323]\tvalidation_0-logloss:0.20615\n",
      "[4324]\tvalidation_0-logloss:0.20615\n",
      "[4325]\tvalidation_0-logloss:0.20615\n",
      "[4326]\tvalidation_0-logloss:0.20614\n",
      "[4327]\tvalidation_0-logloss:0.20614\n",
      "[4328]\tvalidation_0-logloss:0.20614\n",
      "[4329]\tvalidation_0-logloss:0.20613\n",
      "[4330]\tvalidation_0-logloss:0.20613\n",
      "[4331]\tvalidation_0-logloss:0.20613\n",
      "[4332]\tvalidation_0-logloss:0.20612\n",
      "[4333]\tvalidation_0-logloss:0.20612\n",
      "[4334]\tvalidation_0-logloss:0.20612\n",
      "[4335]\tvalidation_0-logloss:0.20612\n",
      "[4336]\tvalidation_0-logloss:0.20612\n",
      "[4337]\tvalidation_0-logloss:0.20612\n",
      "[4338]\tvalidation_0-logloss:0.20611\n",
      "[4339]\tvalidation_0-logloss:0.20611\n",
      "[4340]\tvalidation_0-logloss:0.20611\n",
      "[4341]\tvalidation_0-logloss:0.20610\n",
      "[4342]\tvalidation_0-logloss:0.20610\n",
      "[4343]\tvalidation_0-logloss:0.20610\n",
      "[4344]\tvalidation_0-logloss:0.20609\n",
      "[4345]\tvalidation_0-logloss:0.20609\n",
      "[4346]\tvalidation_0-logloss:0.20609\n",
      "[4347]\tvalidation_0-logloss:0.20608\n",
      "[4348]\tvalidation_0-logloss:0.20608\n",
      "[4349]\tvalidation_0-logloss:0.20607\n",
      "[4350]\tvalidation_0-logloss:0.20607\n",
      "[4351]\tvalidation_0-logloss:0.20607\n",
      "[4352]\tvalidation_0-logloss:0.20606\n",
      "[4353]\tvalidation_0-logloss:0.20606\n",
      "[4354]\tvalidation_0-logloss:0.20606\n",
      "[4355]\tvalidation_0-logloss:0.20606\n",
      "[4356]\tvalidation_0-logloss:0.20605\n",
      "[4357]\tvalidation_0-logloss:0.20605\n",
      "[4358]\tvalidation_0-logloss:0.20604\n",
      "[4359]\tvalidation_0-logloss:0.20604\n",
      "[4360]\tvalidation_0-logloss:0.20604\n",
      "[4361]\tvalidation_0-logloss:0.20603\n",
      "[4362]\tvalidation_0-logloss:0.20603\n",
      "[4363]\tvalidation_0-logloss:0.20603\n",
      "[4364]\tvalidation_0-logloss:0.20603\n",
      "[4365]\tvalidation_0-logloss:0.20602\n",
      "[4366]\tvalidation_0-logloss:0.20602\n",
      "[4367]\tvalidation_0-logloss:0.20601\n",
      "[4368]\tvalidation_0-logloss:0.20601\n",
      "[4369]\tvalidation_0-logloss:0.20600\n",
      "[4370]\tvalidation_0-logloss:0.20600\n",
      "[4371]\tvalidation_0-logloss:0.20599\n",
      "[4372]\tvalidation_0-logloss:0.20598\n",
      "[4373]\tvalidation_0-logloss:0.20598\n",
      "[4374]\tvalidation_0-logloss:0.20598\n",
      "[4375]\tvalidation_0-logloss:0.20598\n",
      "[4376]\tvalidation_0-logloss:0.20597\n",
      "[4377]\tvalidation_0-logloss:0.20597\n",
      "[4378]\tvalidation_0-logloss:0.20597\n",
      "[4379]\tvalidation_0-logloss:0.20596\n",
      "[4380]\tvalidation_0-logloss:0.20596\n",
      "[4381]\tvalidation_0-logloss:0.20595\n",
      "[4382]\tvalidation_0-logloss:0.20595\n",
      "[4383]\tvalidation_0-logloss:0.20594\n",
      "[4384]\tvalidation_0-logloss:0.20594\n",
      "[4385]\tvalidation_0-logloss:0.20594\n",
      "[4386]\tvalidation_0-logloss:0.20594\n",
      "[4387]\tvalidation_0-logloss:0.20593\n",
      "[4388]\tvalidation_0-logloss:0.20593\n",
      "[4389]\tvalidation_0-logloss:0.20593\n",
      "[4390]\tvalidation_0-logloss:0.20592\n",
      "[4391]\tvalidation_0-logloss:0.20592\n",
      "[4392]\tvalidation_0-logloss:0.20592\n",
      "[4393]\tvalidation_0-logloss:0.20592\n",
      "[4394]\tvalidation_0-logloss:0.20592\n",
      "[4395]\tvalidation_0-logloss:0.20591\n",
      "[4396]\tvalidation_0-logloss:0.20591\n",
      "[4397]\tvalidation_0-logloss:0.20591\n",
      "[4398]\tvalidation_0-logloss:0.20591\n",
      "[4399]\tvalidation_0-logloss:0.20590\n",
      "[4400]\tvalidation_0-logloss:0.20590\n",
      "[4401]\tvalidation_0-logloss:0.20590\n",
      "[4402]\tvalidation_0-logloss:0.20589\n",
      "[4403]\tvalidation_0-logloss:0.20589\n",
      "[4404]\tvalidation_0-logloss:0.20588\n",
      "[4405]\tvalidation_0-logloss:0.20588\n",
      "[4406]\tvalidation_0-logloss:0.20588\n",
      "[4407]\tvalidation_0-logloss:0.20587\n",
      "[4408]\tvalidation_0-logloss:0.20587\n",
      "[4409]\tvalidation_0-logloss:0.20587\n",
      "[4410]\tvalidation_0-logloss:0.20587\n",
      "[4411]\tvalidation_0-logloss:0.20586\n",
      "[4412]\tvalidation_0-logloss:0.20586\n",
      "[4413]\tvalidation_0-logloss:0.20585\n",
      "[4414]\tvalidation_0-logloss:0.20585\n",
      "[4415]\tvalidation_0-logloss:0.20585\n",
      "[4416]\tvalidation_0-logloss:0.20585\n",
      "[4417]\tvalidation_0-logloss:0.20584\n",
      "[4418]\tvalidation_0-logloss:0.20584\n",
      "[4419]\tvalidation_0-logloss:0.20584\n",
      "[4420]\tvalidation_0-logloss:0.20584\n",
      "[4421]\tvalidation_0-logloss:0.20583\n",
      "[4422]\tvalidation_0-logloss:0.20583\n",
      "[4423]\tvalidation_0-logloss:0.20583\n",
      "[4424]\tvalidation_0-logloss:0.20582\n",
      "[4425]\tvalidation_0-logloss:0.20582\n",
      "[4426]\tvalidation_0-logloss:0.20582\n",
      "[4427]\tvalidation_0-logloss:0.20581\n",
      "[4428]\tvalidation_0-logloss:0.20581\n",
      "[4429]\tvalidation_0-logloss:0.20581\n",
      "[4430]\tvalidation_0-logloss:0.20580\n",
      "[4431]\tvalidation_0-logloss:0.20580\n",
      "[4432]\tvalidation_0-logloss:0.20580\n",
      "[4433]\tvalidation_0-logloss:0.20580\n",
      "[4434]\tvalidation_0-logloss:0.20579\n",
      "[4435]\tvalidation_0-logloss:0.20579\n",
      "[4436]\tvalidation_0-logloss:0.20579\n",
      "[4437]\tvalidation_0-logloss:0.20578\n",
      "[4438]\tvalidation_0-logloss:0.20578\n",
      "[4439]\tvalidation_0-logloss:0.20578\n",
      "[4440]\tvalidation_0-logloss:0.20578\n",
      "[4441]\tvalidation_0-logloss:0.20577\n",
      "[4442]\tvalidation_0-logloss:0.20577\n",
      "[4443]\tvalidation_0-logloss:0.20577\n",
      "[4444]\tvalidation_0-logloss:0.20576\n",
      "[4445]\tvalidation_0-logloss:0.20576\n",
      "[4446]\tvalidation_0-logloss:0.20576\n",
      "[4447]\tvalidation_0-logloss:0.20575\n",
      "[4448]\tvalidation_0-logloss:0.20575\n",
      "[4449]\tvalidation_0-logloss:0.20575\n",
      "[4450]\tvalidation_0-logloss:0.20574\n",
      "[4451]\tvalidation_0-logloss:0.20574\n",
      "[4452]\tvalidation_0-logloss:0.20574\n",
      "[4453]\tvalidation_0-logloss:0.20574\n",
      "[4454]\tvalidation_0-logloss:0.20573\n",
      "[4455]\tvalidation_0-logloss:0.20573\n",
      "[4456]\tvalidation_0-logloss:0.20573\n",
      "[4457]\tvalidation_0-logloss:0.20572\n",
      "[4458]\tvalidation_0-logloss:0.20572\n",
      "[4459]\tvalidation_0-logloss:0.20572\n",
      "[4460]\tvalidation_0-logloss:0.20572\n",
      "[4461]\tvalidation_0-logloss:0.20571\n",
      "[4462]\tvalidation_0-logloss:0.20571\n",
      "[4463]\tvalidation_0-logloss:0.20571\n",
      "[4464]\tvalidation_0-logloss:0.20571\n",
      "[4465]\tvalidation_0-logloss:0.20570\n",
      "[4466]\tvalidation_0-logloss:0.20570\n",
      "[4467]\tvalidation_0-logloss:0.20570\n",
      "[4468]\tvalidation_0-logloss:0.20570\n",
      "[4469]\tvalidation_0-logloss:0.20569\n",
      "[4470]\tvalidation_0-logloss:0.20569\n",
      "[4471]\tvalidation_0-logloss:0.20569\n",
      "[4472]\tvalidation_0-logloss:0.20568\n",
      "[4473]\tvalidation_0-logloss:0.20568\n",
      "[4474]\tvalidation_0-logloss:0.20568\n",
      "[4475]\tvalidation_0-logloss:0.20568\n",
      "[4476]\tvalidation_0-logloss:0.20568\n",
      "[4477]\tvalidation_0-logloss:0.20567\n",
      "[4478]\tvalidation_0-logloss:0.20567\n",
      "[4479]\tvalidation_0-logloss:0.20567\n",
      "[4480]\tvalidation_0-logloss:0.20567\n",
      "[4481]\tvalidation_0-logloss:0.20567\n",
      "[4482]\tvalidation_0-logloss:0.20566\n",
      "[4483]\tvalidation_0-logloss:0.20566\n",
      "[4484]\tvalidation_0-logloss:0.20566\n",
      "[4485]\tvalidation_0-logloss:0.20565\n",
      "[4486]\tvalidation_0-logloss:0.20565\n",
      "[4487]\tvalidation_0-logloss:0.20565\n",
      "[4488]\tvalidation_0-logloss:0.20565\n",
      "[4489]\tvalidation_0-logloss:0.20565\n",
      "[4490]\tvalidation_0-logloss:0.20565\n",
      "[4491]\tvalidation_0-logloss:0.20564\n",
      "[4492]\tvalidation_0-logloss:0.20564\n",
      "[4493]\tvalidation_0-logloss:0.20564\n",
      "[4494]\tvalidation_0-logloss:0.20563\n",
      "[4495]\tvalidation_0-logloss:0.20563\n",
      "[4496]\tvalidation_0-logloss:0.20562\n",
      "[4497]\tvalidation_0-logloss:0.20562\n",
      "[4498]\tvalidation_0-logloss:0.20562\n",
      "[4499]\tvalidation_0-logloss:0.20562\n",
      "[4500]\tvalidation_0-logloss:0.20561\n",
      "[4501]\tvalidation_0-logloss:0.20561\n",
      "[4502]\tvalidation_0-logloss:0.20561\n",
      "[4503]\tvalidation_0-logloss:0.20560\n",
      "[4504]\tvalidation_0-logloss:0.20560\n",
      "[4505]\tvalidation_0-logloss:0.20560\n",
      "[4506]\tvalidation_0-logloss:0.20560\n",
      "[4507]\tvalidation_0-logloss:0.20559\n",
      "[4508]\tvalidation_0-logloss:0.20559\n",
      "[4509]\tvalidation_0-logloss:0.20559\n",
      "[4510]\tvalidation_0-logloss:0.20559\n",
      "[4511]\tvalidation_0-logloss:0.20558\n",
      "[4512]\tvalidation_0-logloss:0.20558\n",
      "[4513]\tvalidation_0-logloss:0.20558\n",
      "[4514]\tvalidation_0-logloss:0.20558\n",
      "[4515]\tvalidation_0-logloss:0.20557\n",
      "[4516]\tvalidation_0-logloss:0.20557\n",
      "[4517]\tvalidation_0-logloss:0.20556\n",
      "[4518]\tvalidation_0-logloss:0.20556\n",
      "[4519]\tvalidation_0-logloss:0.20556\n",
      "[4520]\tvalidation_0-logloss:0.20555\n",
      "[4521]\tvalidation_0-logloss:0.20555\n",
      "[4522]\tvalidation_0-logloss:0.20555\n",
      "[4523]\tvalidation_0-logloss:0.20555\n",
      "[4524]\tvalidation_0-logloss:0.20554\n",
      "[4525]\tvalidation_0-logloss:0.20554\n",
      "[4526]\tvalidation_0-logloss:0.20554\n",
      "[4527]\tvalidation_0-logloss:0.20554\n",
      "[4528]\tvalidation_0-logloss:0.20554\n",
      "[4529]\tvalidation_0-logloss:0.20553\n",
      "[4530]\tvalidation_0-logloss:0.20553\n",
      "[4531]\tvalidation_0-logloss:0.20553\n",
      "[4532]\tvalidation_0-logloss:0.20552\n",
      "[4533]\tvalidation_0-logloss:0.20552\n",
      "[4534]\tvalidation_0-logloss:0.20552\n",
      "[4535]\tvalidation_0-logloss:0.20552\n",
      "[4536]\tvalidation_0-logloss:0.20551\n",
      "[4537]\tvalidation_0-logloss:0.20551\n",
      "[4538]\tvalidation_0-logloss:0.20551\n",
      "[4539]\tvalidation_0-logloss:0.20550\n",
      "[4540]\tvalidation_0-logloss:0.20550\n",
      "[4541]\tvalidation_0-logloss:0.20550\n",
      "[4542]\tvalidation_0-logloss:0.20550\n",
      "[4543]\tvalidation_0-logloss:0.20549\n",
      "[4544]\tvalidation_0-logloss:0.20549\n",
      "[4545]\tvalidation_0-logloss:0.20549\n",
      "[4546]\tvalidation_0-logloss:0.20549\n",
      "[4547]\tvalidation_0-logloss:0.20548\n",
      "[4548]\tvalidation_0-logloss:0.20548\n",
      "[4549]\tvalidation_0-logloss:0.20548\n",
      "[4550]\tvalidation_0-logloss:0.20548\n",
      "[4551]\tvalidation_0-logloss:0.20548\n",
      "[4552]\tvalidation_0-logloss:0.20547\n",
      "[4553]\tvalidation_0-logloss:0.20547\n",
      "[4554]\tvalidation_0-logloss:0.20547\n",
      "[4555]\tvalidation_0-logloss:0.20547\n",
      "[4556]\tvalidation_0-logloss:0.20547\n",
      "[4557]\tvalidation_0-logloss:0.20546\n",
      "[4558]\tvalidation_0-logloss:0.20546\n",
      "[4559]\tvalidation_0-logloss:0.20545\n",
      "[4560]\tvalidation_0-logloss:0.20545\n",
      "[4561]\tvalidation_0-logloss:0.20545\n",
      "[4562]\tvalidation_0-logloss:0.20544\n",
      "[4563]\tvalidation_0-logloss:0.20544\n",
      "[4564]\tvalidation_0-logloss:0.20544\n",
      "[4565]\tvalidation_0-logloss:0.20544\n",
      "[4566]\tvalidation_0-logloss:0.20543\n",
      "[4567]\tvalidation_0-logloss:0.20543\n",
      "[4568]\tvalidation_0-logloss:0.20542\n",
      "[4569]\tvalidation_0-logloss:0.20542\n",
      "[4570]\tvalidation_0-logloss:0.20542\n",
      "[4571]\tvalidation_0-logloss:0.20542\n",
      "[4572]\tvalidation_0-logloss:0.20542\n",
      "[4573]\tvalidation_0-logloss:0.20541\n",
      "[4574]\tvalidation_0-logloss:0.20541\n",
      "[4575]\tvalidation_0-logloss:0.20540\n",
      "[4576]\tvalidation_0-logloss:0.20540\n",
      "[4577]\tvalidation_0-logloss:0.20540\n",
      "[4578]\tvalidation_0-logloss:0.20540\n",
      "[4579]\tvalidation_0-logloss:0.20539\n",
      "[4580]\tvalidation_0-logloss:0.20539\n",
      "[4581]\tvalidation_0-logloss:0.20539\n",
      "[4582]\tvalidation_0-logloss:0.20539\n",
      "[4583]\tvalidation_0-logloss:0.20538\n",
      "[4584]\tvalidation_0-logloss:0.20538\n",
      "[4585]\tvalidation_0-logloss:0.20538\n",
      "[4586]\tvalidation_0-logloss:0.20538\n",
      "[4587]\tvalidation_0-logloss:0.20537\n",
      "[4588]\tvalidation_0-logloss:0.20537\n",
      "[4589]\tvalidation_0-logloss:0.20537\n",
      "[4590]\tvalidation_0-logloss:0.20537\n",
      "[4591]\tvalidation_0-logloss:0.20537\n",
      "[4592]\tvalidation_0-logloss:0.20536\n",
      "[4593]\tvalidation_0-logloss:0.20536\n",
      "[4594]\tvalidation_0-logloss:0.20536\n",
      "[4595]\tvalidation_0-logloss:0.20536\n",
      "[4596]\tvalidation_0-logloss:0.20536\n",
      "[4597]\tvalidation_0-logloss:0.20536\n",
      "[4598]\tvalidation_0-logloss:0.20535\n",
      "[4599]\tvalidation_0-logloss:0.20535\n",
      "[4600]\tvalidation_0-logloss:0.20535\n",
      "[4601]\tvalidation_0-logloss:0.20534\n",
      "[4602]\tvalidation_0-logloss:0.20534\n",
      "[4603]\tvalidation_0-logloss:0.20534\n",
      "[4604]\tvalidation_0-logloss:0.20534\n",
      "[4605]\tvalidation_0-logloss:0.20533\n",
      "[4606]\tvalidation_0-logloss:0.20533\n",
      "[4607]\tvalidation_0-logloss:0.20533\n",
      "[4608]\tvalidation_0-logloss:0.20533\n",
      "[4609]\tvalidation_0-logloss:0.20533\n",
      "[4610]\tvalidation_0-logloss:0.20532\n",
      "[4611]\tvalidation_0-logloss:0.20532\n",
      "[4612]\tvalidation_0-logloss:0.20532\n",
      "[4613]\tvalidation_0-logloss:0.20532\n",
      "[4614]\tvalidation_0-logloss:0.20532\n",
      "[4615]\tvalidation_0-logloss:0.20532\n",
      "[4616]\tvalidation_0-logloss:0.20531\n",
      "[4617]\tvalidation_0-logloss:0.20531\n",
      "[4618]\tvalidation_0-logloss:0.20531\n",
      "[4619]\tvalidation_0-logloss:0.20531\n",
      "[4620]\tvalidation_0-logloss:0.20531\n",
      "[4621]\tvalidation_0-logloss:0.20530\n",
      "[4622]\tvalidation_0-logloss:0.20530\n",
      "[4623]\tvalidation_0-logloss:0.20530\n",
      "[4624]\tvalidation_0-logloss:0.20529\n",
      "[4625]\tvalidation_0-logloss:0.20529\n",
      "[4626]\tvalidation_0-logloss:0.20529\n",
      "[4627]\tvalidation_0-logloss:0.20529\n",
      "[4628]\tvalidation_0-logloss:0.20529\n",
      "[4629]\tvalidation_0-logloss:0.20528\n",
      "[4630]\tvalidation_0-logloss:0.20528\n",
      "[4631]\tvalidation_0-logloss:0.20528\n",
      "[4632]\tvalidation_0-logloss:0.20528\n",
      "[4633]\tvalidation_0-logloss:0.20527\n",
      "[4634]\tvalidation_0-logloss:0.20527\n",
      "[4635]\tvalidation_0-logloss:0.20526\n",
      "[4636]\tvalidation_0-logloss:0.20526\n",
      "[4637]\tvalidation_0-logloss:0.20526\n",
      "[4638]\tvalidation_0-logloss:0.20526\n",
      "[4639]\tvalidation_0-logloss:0.20525\n",
      "[4640]\tvalidation_0-logloss:0.20525\n",
      "[4641]\tvalidation_0-logloss:0.20525\n",
      "[4642]\tvalidation_0-logloss:0.20525\n",
      "[4643]\tvalidation_0-logloss:0.20524\n",
      "[4644]\tvalidation_0-logloss:0.20524\n",
      "[4645]\tvalidation_0-logloss:0.20524\n",
      "[4646]\tvalidation_0-logloss:0.20524\n",
      "[4647]\tvalidation_0-logloss:0.20523\n",
      "[4648]\tvalidation_0-logloss:0.20523\n",
      "[4649]\tvalidation_0-logloss:0.20523\n",
      "[4650]\tvalidation_0-logloss:0.20523\n",
      "[4651]\tvalidation_0-logloss:0.20522\n",
      "[4652]\tvalidation_0-logloss:0.20522\n",
      "[4653]\tvalidation_0-logloss:0.20521\n",
      "[4654]\tvalidation_0-logloss:0.20521\n",
      "[4655]\tvalidation_0-logloss:0.20520\n",
      "[4656]\tvalidation_0-logloss:0.20520\n",
      "[4657]\tvalidation_0-logloss:0.20520\n",
      "[4658]\tvalidation_0-logloss:0.20520\n",
      "[4659]\tvalidation_0-logloss:0.20519\n",
      "[4660]\tvalidation_0-logloss:0.20519\n",
      "[4661]\tvalidation_0-logloss:0.20519\n",
      "[4662]\tvalidation_0-logloss:0.20518\n",
      "[4663]\tvalidation_0-logloss:0.20518\n",
      "[4664]\tvalidation_0-logloss:0.20518\n",
      "[4665]\tvalidation_0-logloss:0.20517\n",
      "[4666]\tvalidation_0-logloss:0.20517\n",
      "[4667]\tvalidation_0-logloss:0.20516\n",
      "[4668]\tvalidation_0-logloss:0.20516\n",
      "[4669]\tvalidation_0-logloss:0.20516\n",
      "[4670]\tvalidation_0-logloss:0.20515\n",
      "[4671]\tvalidation_0-logloss:0.20515\n",
      "[4672]\tvalidation_0-logloss:0.20515\n",
      "[4673]\tvalidation_0-logloss:0.20514\n",
      "[4674]\tvalidation_0-logloss:0.20514\n",
      "[4675]\tvalidation_0-logloss:0.20514\n",
      "[4676]\tvalidation_0-logloss:0.20514\n",
      "[4677]\tvalidation_0-logloss:0.20513\n",
      "[4678]\tvalidation_0-logloss:0.20513\n",
      "[4679]\tvalidation_0-logloss:0.20513\n",
      "[4680]\tvalidation_0-logloss:0.20512\n",
      "[4681]\tvalidation_0-logloss:0.20512\n",
      "[4682]\tvalidation_0-logloss:0.20512\n",
      "[4683]\tvalidation_0-logloss:0.20511\n",
      "[4684]\tvalidation_0-logloss:0.20511\n",
      "[4685]\tvalidation_0-logloss:0.20511\n",
      "[4686]\tvalidation_0-logloss:0.20510\n",
      "[4687]\tvalidation_0-logloss:0.20510\n",
      "[4688]\tvalidation_0-logloss:0.20510\n",
      "[4689]\tvalidation_0-logloss:0.20510\n",
      "[4690]\tvalidation_0-logloss:0.20509\n",
      "[4691]\tvalidation_0-logloss:0.20509\n",
      "[4692]\tvalidation_0-logloss:0.20509\n",
      "[4693]\tvalidation_0-logloss:0.20508\n",
      "[4694]\tvalidation_0-logloss:0.20508\n",
      "[4695]\tvalidation_0-logloss:0.20507\n",
      "[4696]\tvalidation_0-logloss:0.20507\n",
      "[4697]\tvalidation_0-logloss:0.20507\n",
      "[4698]\tvalidation_0-logloss:0.20507\n",
      "[4699]\tvalidation_0-logloss:0.20506\n",
      "[4700]\tvalidation_0-logloss:0.20506\n",
      "[4701]\tvalidation_0-logloss:0.20505\n",
      "[4702]\tvalidation_0-logloss:0.20505\n",
      "[4703]\tvalidation_0-logloss:0.20505\n",
      "[4704]\tvalidation_0-logloss:0.20504\n",
      "[4705]\tvalidation_0-logloss:0.20504\n",
      "[4706]\tvalidation_0-logloss:0.20504\n",
      "[4707]\tvalidation_0-logloss:0.20503\n",
      "[4708]\tvalidation_0-logloss:0.20503\n",
      "[4709]\tvalidation_0-logloss:0.20503\n",
      "[4710]\tvalidation_0-logloss:0.20503\n",
      "[4711]\tvalidation_0-logloss:0.20502\n",
      "[4712]\tvalidation_0-logloss:0.20502\n",
      "[4713]\tvalidation_0-logloss:0.20502\n",
      "[4714]\tvalidation_0-logloss:0.20502\n",
      "[4715]\tvalidation_0-logloss:0.20501\n",
      "[4716]\tvalidation_0-logloss:0.20501\n",
      "[4717]\tvalidation_0-logloss:0.20501\n",
      "[4718]\tvalidation_0-logloss:0.20501\n",
      "[4719]\tvalidation_0-logloss:0.20501\n",
      "[4720]\tvalidation_0-logloss:0.20500\n",
      "[4721]\tvalidation_0-logloss:0.20500\n",
      "[4722]\tvalidation_0-logloss:0.20500\n",
      "[4723]\tvalidation_0-logloss:0.20499\n",
      "[4724]\tvalidation_0-logloss:0.20499\n",
      "[4725]\tvalidation_0-logloss:0.20499\n",
      "[4726]\tvalidation_0-logloss:0.20498\n",
      "[4727]\tvalidation_0-logloss:0.20498\n",
      "[4728]\tvalidation_0-logloss:0.20498\n",
      "[4729]\tvalidation_0-logloss:0.20498\n",
      "[4730]\tvalidation_0-logloss:0.20497\n",
      "[4731]\tvalidation_0-logloss:0.20497\n",
      "[4732]\tvalidation_0-logloss:0.20497\n",
      "[4733]\tvalidation_0-logloss:0.20496\n",
      "[4734]\tvalidation_0-logloss:0.20496\n",
      "[4735]\tvalidation_0-logloss:0.20496\n",
      "[4736]\tvalidation_0-logloss:0.20495\n",
      "[4737]\tvalidation_0-logloss:0.20495\n",
      "[4738]\tvalidation_0-logloss:0.20495\n",
      "[4739]\tvalidation_0-logloss:0.20495\n",
      "[4740]\tvalidation_0-logloss:0.20495\n",
      "[4741]\tvalidation_0-logloss:0.20494\n",
      "[4742]\tvalidation_0-logloss:0.20494\n",
      "[4743]\tvalidation_0-logloss:0.20493\n",
      "[4744]\tvalidation_0-logloss:0.20493\n",
      "[4745]\tvalidation_0-logloss:0.20493\n",
      "[4746]\tvalidation_0-logloss:0.20492\n",
      "[4747]\tvalidation_0-logloss:0.20492\n",
      "[4748]\tvalidation_0-logloss:0.20492\n",
      "[4749]\tvalidation_0-logloss:0.20492\n",
      "[4750]\tvalidation_0-logloss:0.20491\n",
      "[4751]\tvalidation_0-logloss:0.20491\n",
      "[4752]\tvalidation_0-logloss:0.20491\n",
      "[4753]\tvalidation_0-logloss:0.20491\n",
      "[4754]\tvalidation_0-logloss:0.20490\n",
      "[4755]\tvalidation_0-logloss:0.20490\n",
      "[4756]\tvalidation_0-logloss:0.20490\n",
      "[4757]\tvalidation_0-logloss:0.20489\n",
      "[4758]\tvalidation_0-logloss:0.20489\n",
      "[4759]\tvalidation_0-logloss:0.20489\n",
      "[4760]\tvalidation_0-logloss:0.20489\n",
      "[4761]\tvalidation_0-logloss:0.20489\n",
      "[4762]\tvalidation_0-logloss:0.20489\n",
      "[4763]\tvalidation_0-logloss:0.20488\n",
      "[4764]\tvalidation_0-logloss:0.20488\n",
      "[4765]\tvalidation_0-logloss:0.20488\n",
      "[4766]\tvalidation_0-logloss:0.20487\n",
      "[4767]\tvalidation_0-logloss:0.20487\n",
      "[4768]\tvalidation_0-logloss:0.20487\n",
      "[4769]\tvalidation_0-logloss:0.20486\n",
      "[4770]\tvalidation_0-logloss:0.20486\n",
      "[4771]\tvalidation_0-logloss:0.20486\n",
      "[4772]\tvalidation_0-logloss:0.20486\n",
      "[4773]\tvalidation_0-logloss:0.20485\n",
      "[4774]\tvalidation_0-logloss:0.20485\n",
      "[4775]\tvalidation_0-logloss:0.20485\n",
      "[4776]\tvalidation_0-logloss:0.20485\n",
      "[4777]\tvalidation_0-logloss:0.20484\n",
      "[4778]\tvalidation_0-logloss:0.20484\n",
      "[4779]\tvalidation_0-logloss:0.20484\n",
      "[4780]\tvalidation_0-logloss:0.20483\n",
      "[4781]\tvalidation_0-logloss:0.20483\n",
      "[4782]\tvalidation_0-logloss:0.20483\n",
      "[4783]\tvalidation_0-logloss:0.20482\n",
      "[4784]\tvalidation_0-logloss:0.20482\n",
      "[4785]\tvalidation_0-logloss:0.20481\n",
      "[4786]\tvalidation_0-logloss:0.20481\n",
      "[4787]\tvalidation_0-logloss:0.20481\n",
      "[4788]\tvalidation_0-logloss:0.20480\n",
      "[4789]\tvalidation_0-logloss:0.20480\n",
      "[4790]\tvalidation_0-logloss:0.20480\n",
      "[4791]\tvalidation_0-logloss:0.20479\n",
      "[4792]\tvalidation_0-logloss:0.20479\n",
      "[4793]\tvalidation_0-logloss:0.20479\n",
      "[4794]\tvalidation_0-logloss:0.20479\n",
      "[4795]\tvalidation_0-logloss:0.20478\n",
      "[4796]\tvalidation_0-logloss:0.20478\n",
      "[4797]\tvalidation_0-logloss:0.20478\n",
      "[4798]\tvalidation_0-logloss:0.20477\n",
      "[4799]\tvalidation_0-logloss:0.20477\n",
      "[4800]\tvalidation_0-logloss:0.20477\n",
      "[4801]\tvalidation_0-logloss:0.20477\n",
      "[4802]\tvalidation_0-logloss:0.20476\n",
      "[4803]\tvalidation_0-logloss:0.20476\n",
      "[4804]\tvalidation_0-logloss:0.20476\n",
      "[4805]\tvalidation_0-logloss:0.20475\n",
      "[4806]\tvalidation_0-logloss:0.20475\n",
      "[4807]\tvalidation_0-logloss:0.20475\n",
      "[4808]\tvalidation_0-logloss:0.20474\n",
      "[4809]\tvalidation_0-logloss:0.20474\n",
      "[4810]\tvalidation_0-logloss:0.20474\n",
      "[4811]\tvalidation_0-logloss:0.20473\n",
      "[4812]\tvalidation_0-logloss:0.20473\n",
      "[4813]\tvalidation_0-logloss:0.20473\n",
      "[4814]\tvalidation_0-logloss:0.20472\n",
      "[4815]\tvalidation_0-logloss:0.20472\n",
      "[4816]\tvalidation_0-logloss:0.20472\n",
      "[4817]\tvalidation_0-logloss:0.20471\n",
      "[4818]\tvalidation_0-logloss:0.20471\n",
      "[4819]\tvalidation_0-logloss:0.20471\n",
      "[4820]\tvalidation_0-logloss:0.20470\n",
      "[4821]\tvalidation_0-logloss:0.20470\n",
      "[4822]\tvalidation_0-logloss:0.20470\n",
      "[4823]\tvalidation_0-logloss:0.20470\n",
      "[4824]\tvalidation_0-logloss:0.20469\n",
      "[4825]\tvalidation_0-logloss:0.20469\n",
      "[4826]\tvalidation_0-logloss:0.20469\n",
      "[4827]\tvalidation_0-logloss:0.20468\n",
      "[4828]\tvalidation_0-logloss:0.20468\n",
      "[4829]\tvalidation_0-logloss:0.20468\n",
      "[4830]\tvalidation_0-logloss:0.20467\n",
      "[4831]\tvalidation_0-logloss:0.20467\n",
      "[4832]\tvalidation_0-logloss:0.20467\n",
      "[4833]\tvalidation_0-logloss:0.20467\n",
      "[4834]\tvalidation_0-logloss:0.20467\n",
      "[4835]\tvalidation_0-logloss:0.20466\n",
      "[4836]\tvalidation_0-logloss:0.20466\n",
      "[4837]\tvalidation_0-logloss:0.20466\n",
      "[4838]\tvalidation_0-logloss:0.20465\n",
      "[4839]\tvalidation_0-logloss:0.20465\n",
      "[4840]\tvalidation_0-logloss:0.20465\n",
      "[4841]\tvalidation_0-logloss:0.20464\n",
      "[4842]\tvalidation_0-logloss:0.20464\n",
      "[4843]\tvalidation_0-logloss:0.20464\n",
      "[4844]\tvalidation_0-logloss:0.20463\n",
      "[4845]\tvalidation_0-logloss:0.20463\n",
      "[4846]\tvalidation_0-logloss:0.20463\n",
      "[4847]\tvalidation_0-logloss:0.20463\n",
      "[4848]\tvalidation_0-logloss:0.20463\n",
      "[4849]\tvalidation_0-logloss:0.20463\n",
      "[4850]\tvalidation_0-logloss:0.20462\n",
      "[4851]\tvalidation_0-logloss:0.20462\n",
      "[4852]\tvalidation_0-logloss:0.20462\n",
      "[4853]\tvalidation_0-logloss:0.20462\n",
      "[4854]\tvalidation_0-logloss:0.20461\n",
      "[4855]\tvalidation_0-logloss:0.20461\n",
      "[4856]\tvalidation_0-logloss:0.20461\n",
      "[4857]\tvalidation_0-logloss:0.20461\n",
      "[4858]\tvalidation_0-logloss:0.20460\n",
      "[4859]\tvalidation_0-logloss:0.20460\n",
      "[4860]\tvalidation_0-logloss:0.20460\n",
      "[4861]\tvalidation_0-logloss:0.20459\n",
      "[4862]\tvalidation_0-logloss:0.20459\n",
      "[4863]\tvalidation_0-logloss:0.20459\n",
      "[4864]\tvalidation_0-logloss:0.20459\n",
      "[4865]\tvalidation_0-logloss:0.20458\n",
      "[4866]\tvalidation_0-logloss:0.20458\n",
      "[4867]\tvalidation_0-logloss:0.20458\n",
      "[4868]\tvalidation_0-logloss:0.20458\n",
      "[4869]\tvalidation_0-logloss:0.20457\n",
      "[4870]\tvalidation_0-logloss:0.20457\n",
      "[4871]\tvalidation_0-logloss:0.20457\n",
      "[4872]\tvalidation_0-logloss:0.20457\n",
      "[4873]\tvalidation_0-logloss:0.20456\n",
      "[4874]\tvalidation_0-logloss:0.20456\n",
      "[4875]\tvalidation_0-logloss:0.20456\n",
      "[4876]\tvalidation_0-logloss:0.20455\n",
      "[4877]\tvalidation_0-logloss:0.20455\n",
      "[4878]\tvalidation_0-logloss:0.20455\n",
      "[4879]\tvalidation_0-logloss:0.20455\n",
      "[4880]\tvalidation_0-logloss:0.20454\n",
      "[4881]\tvalidation_0-logloss:0.20454\n",
      "[4882]\tvalidation_0-logloss:0.20454\n",
      "[4883]\tvalidation_0-logloss:0.20453\n",
      "[4884]\tvalidation_0-logloss:0.20453\n",
      "[4885]\tvalidation_0-logloss:0.20453\n",
      "[4886]\tvalidation_0-logloss:0.20453\n",
      "[4887]\tvalidation_0-logloss:0.20452\n",
      "[4888]\tvalidation_0-logloss:0.20452\n",
      "[4889]\tvalidation_0-logloss:0.20452\n",
      "[4890]\tvalidation_0-logloss:0.20452\n",
      "[4891]\tvalidation_0-logloss:0.20451\n",
      "[4892]\tvalidation_0-logloss:0.20451\n",
      "[4893]\tvalidation_0-logloss:0.20451\n",
      "[4894]\tvalidation_0-logloss:0.20450\n",
      "[4895]\tvalidation_0-logloss:0.20450\n",
      "[4896]\tvalidation_0-logloss:0.20450\n",
      "[4897]\tvalidation_0-logloss:0.20449\n",
      "[4898]\tvalidation_0-logloss:0.20449\n",
      "[4899]\tvalidation_0-logloss:0.20448\n",
      "[4900]\tvalidation_0-logloss:0.20448\n",
      "[4901]\tvalidation_0-logloss:0.20448\n",
      "[4902]\tvalidation_0-logloss:0.20448\n",
      "[4903]\tvalidation_0-logloss:0.20447\n",
      "[4904]\tvalidation_0-logloss:0.20447\n",
      "[4905]\tvalidation_0-logloss:0.20447\n",
      "[4906]\tvalidation_0-logloss:0.20446\n",
      "[4907]\tvalidation_0-logloss:0.20446\n",
      "[4908]\tvalidation_0-logloss:0.20446\n",
      "[4909]\tvalidation_0-logloss:0.20445\n",
      "[4910]\tvalidation_0-logloss:0.20445\n",
      "[4911]\tvalidation_0-logloss:0.20444\n",
      "[4912]\tvalidation_0-logloss:0.20444\n",
      "[4913]\tvalidation_0-logloss:0.20444\n",
      "[4914]\tvalidation_0-logloss:0.20444\n",
      "[4915]\tvalidation_0-logloss:0.20443\n",
      "[4916]\tvalidation_0-logloss:0.20443\n",
      "[4917]\tvalidation_0-logloss:0.20443\n",
      "[4918]\tvalidation_0-logloss:0.20442\n",
      "[4919]\tvalidation_0-logloss:0.20442\n",
      "[4920]\tvalidation_0-logloss:0.20442\n",
      "[4921]\tvalidation_0-logloss:0.20441\n",
      "[4922]\tvalidation_0-logloss:0.20441\n",
      "[4923]\tvalidation_0-logloss:0.20441\n",
      "[4924]\tvalidation_0-logloss:0.20441\n",
      "[4925]\tvalidation_0-logloss:0.20441\n",
      "[4926]\tvalidation_0-logloss:0.20440\n",
      "[4927]\tvalidation_0-logloss:0.20440\n",
      "[4928]\tvalidation_0-logloss:0.20439\n",
      "[4929]\tvalidation_0-logloss:0.20439\n",
      "[4930]\tvalidation_0-logloss:0.20439\n",
      "[4931]\tvalidation_0-logloss:0.20439\n",
      "[4932]\tvalidation_0-logloss:0.20438\n",
      "[4933]\tvalidation_0-logloss:0.20438\n",
      "[4934]\tvalidation_0-logloss:0.20438\n",
      "[4935]\tvalidation_0-logloss:0.20438\n",
      "[4936]\tvalidation_0-logloss:0.20437\n",
      "[4937]\tvalidation_0-logloss:0.20437\n",
      "[4938]\tvalidation_0-logloss:0.20437\n",
      "[4939]\tvalidation_0-logloss:0.20437\n",
      "[4940]\tvalidation_0-logloss:0.20436\n",
      "[4941]\tvalidation_0-logloss:0.20436\n",
      "[4942]\tvalidation_0-logloss:0.20436\n",
      "[4943]\tvalidation_0-logloss:0.20436\n",
      "[4944]\tvalidation_0-logloss:0.20435\n",
      "[4945]\tvalidation_0-logloss:0.20435\n",
      "[4946]\tvalidation_0-logloss:0.20435\n",
      "[4947]\tvalidation_0-logloss:0.20435\n",
      "[4948]\tvalidation_0-logloss:0.20435\n",
      "[4949]\tvalidation_0-logloss:0.20435\n",
      "[4950]\tvalidation_0-logloss:0.20434\n",
      "[4951]\tvalidation_0-logloss:0.20434\n",
      "[4952]\tvalidation_0-logloss:0.20434\n",
      "[4953]\tvalidation_0-logloss:0.20434\n",
      "[4954]\tvalidation_0-logloss:0.20434\n",
      "[4955]\tvalidation_0-logloss:0.20433\n",
      "[4956]\tvalidation_0-logloss:0.20433\n",
      "[4957]\tvalidation_0-logloss:0.20433\n",
      "[4958]\tvalidation_0-logloss:0.20433\n",
      "[4959]\tvalidation_0-logloss:0.20433\n",
      "[4960]\tvalidation_0-logloss:0.20433\n",
      "[4961]\tvalidation_0-logloss:0.20433\n",
      "[4962]\tvalidation_0-logloss:0.20432\n",
      "[4963]\tvalidation_0-logloss:0.20432\n",
      "[4964]\tvalidation_0-logloss:0.20432\n",
      "[4965]\tvalidation_0-logloss:0.20432\n",
      "[4966]\tvalidation_0-logloss:0.20431\n",
      "[4967]\tvalidation_0-logloss:0.20431\n",
      "[4968]\tvalidation_0-logloss:0.20431\n",
      "[4969]\tvalidation_0-logloss:0.20431\n",
      "[4970]\tvalidation_0-logloss:0.20430\n",
      "[4971]\tvalidation_0-logloss:0.20430\n",
      "[4972]\tvalidation_0-logloss:0.20430\n",
      "[4973]\tvalidation_0-logloss:0.20429\n",
      "[4974]\tvalidation_0-logloss:0.20429\n",
      "[4975]\tvalidation_0-logloss:0.20429\n",
      "[4976]\tvalidation_0-logloss:0.20428\n",
      "[4977]\tvalidation_0-logloss:0.20428\n",
      "[4978]\tvalidation_0-logloss:0.20428\n",
      "[4979]\tvalidation_0-logloss:0.20427\n",
      "[4980]\tvalidation_0-logloss:0.20427\n",
      "[4981]\tvalidation_0-logloss:0.20427\n",
      "[4982]\tvalidation_0-logloss:0.20426\n",
      "[4983]\tvalidation_0-logloss:0.20426\n",
      "[4984]\tvalidation_0-logloss:0.20426\n",
      "[4985]\tvalidation_0-logloss:0.20426\n",
      "[4986]\tvalidation_0-logloss:0.20425\n",
      "[4987]\tvalidation_0-logloss:0.20425\n",
      "[4988]\tvalidation_0-logloss:0.20425\n",
      "[4989]\tvalidation_0-logloss:0.20424\n",
      "[4990]\tvalidation_0-logloss:0.20424\n",
      "[4991]\tvalidation_0-logloss:0.20423\n",
      "[4992]\tvalidation_0-logloss:0.20423\n",
      "[4993]\tvalidation_0-logloss:0.20423\n",
      "[4994]\tvalidation_0-logloss:0.20423\n",
      "[4995]\tvalidation_0-logloss:0.20422\n",
      "[4996]\tvalidation_0-logloss:0.20422\n",
      "[4997]\tvalidation_0-logloss:0.20421\n",
      "[4998]\tvalidation_0-logloss:0.20421\n",
      "[4999]\tvalidation_0-logloss:0.20421\n"
     ]
    },
    {
     "data": {
      "text/plain": "XGBClassifier(base_score=None, booster='gbtree', callbacks=None,\n              colsample_bylevel=None, colsample_bynode=None,\n              colsample_bytree=0.7, device=None, early_stopping_rounds=50,\n              enable_categorical=False, eval_metric='logloss',\n              feature_types=None, gamma=None, grow_policy=None,\n              importance_type=None, interaction_constraints=None,\n              learning_rate=0.01, max_bin=None, max_cat_threshold=None,\n              max_cat_to_onehot=None, max_delta_step=None, max_depth=5,\n              max_leaves=None, min_child_weight=None, missing=nan,\n              monotone_constraints=None, multi_strategy=None, n_estimators=5000,\n              n_jobs=None, num_parallel_tree=None, random_state=None, ...)",
      "text/html": "<style>#sk-container-id-2 {color: black;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>XGBClassifier(base_score=None, booster=&#x27;gbtree&#x27;, callbacks=None,\n              colsample_bylevel=None, colsample_bynode=None,\n              colsample_bytree=0.7, device=None, early_stopping_rounds=50,\n              enable_categorical=False, eval_metric=&#x27;logloss&#x27;,\n              feature_types=None, gamma=None, grow_policy=None,\n              importance_type=None, interaction_constraints=None,\n              learning_rate=0.01, max_bin=None, max_cat_threshold=None,\n              max_cat_to_onehot=None, max_delta_step=None, max_depth=5,\n              max_leaves=None, min_child_weight=None, missing=nan,\n              monotone_constraints=None, multi_strategy=None, n_estimators=5000,\n              n_jobs=None, num_parallel_tree=None, random_state=None, ...)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">XGBClassifier</label><div class=\"sk-toggleable__content\"><pre>XGBClassifier(base_score=None, booster=&#x27;gbtree&#x27;, callbacks=None,\n              colsample_bylevel=None, colsample_bynode=None,\n              colsample_bytree=0.7, device=None, early_stopping_rounds=50,\n              enable_categorical=False, eval_metric=&#x27;logloss&#x27;,\n              feature_types=None, gamma=None, grow_policy=None,\n              importance_type=None, interaction_constraints=None,\n              learning_rate=0.01, max_bin=None, max_cat_threshold=None,\n              max_cat_to_onehot=None, max_delta_step=None, max_depth=5,\n              max_leaves=None, min_child_weight=None, missing=nan,\n              monotone_constraints=None, multi_strategy=None, n_estimators=5000,\n              n_jobs=None, num_parallel_tree=None, random_state=None, ...)</pre></div></div></div></div></div>"
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import xgboost as xgb\n",
    "\n",
    "model = xgb.XGBClassifier(\n",
    "    learning_rate=0.01,\n",
    "    booster='gbtree',  # 'gbtree' is the default and corresponds to 'gbdt' in LightGBM\n",
    "    objective='binary:logistic',  # 'binary:logistic' is the objective for binary classification in XGBoost\n",
    "    eval_metric='logloss',  # 'logloss' is a valid metric for XGBoost\n",
    "    max_depth=5,\n",
    "    colsample_bytree=0.7,  # This is similar to 'sub_feature' in LightGBM\n",
    "    n_estimators=5000,\n",
    "    early_stopping_rounds=50,  # This is the equivalent of 'early_stop' in LightGBM\n",
    "    verbose=-1\n",
    ")\n",
    "\n",
    "# Fit the model\n",
    "model.fit(trainSub[predictors], trainSub['label'], eval_set=[(trainSub[predictors], trainSub['label'])])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:05:41.126215400Z",
     "start_time": "2024-09-19T12:03:44.920428200Z"
    }
   },
   "id": "7a000eede7209f11"
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86183\\AppData\\Local\\Temp\\ipykernel_11440\\262143630.py:4: FutureWarning: In a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.\n",
      "  for i in validgroup:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.651416070007222\n"
     ]
    }
   ],
   "source": [
    "validSub['pred_prob'] = model.predict_proba(validSub[predictors])[:,1]\n",
    "validgroup = validSub.groupby(['Coupon_id'])\n",
    "aucs = []\n",
    "for i in validgroup:\n",
    "    tmpdf = i[1] \n",
    "    if len(tmpdf['label'].unique()) != 2:\n",
    "        continue\n",
    "    fpr, tpr, thresholds = roc_curve(tmpdf['label'], tmpdf['pred_prob'], pos_label=1)\n",
    "    aucs.append(auc(fpr, tpr))\n",
    "print(np.average(aucs))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:05:42.793370400Z",
     "start_time": "2024-09-19T12:05:41.126215400Z"
    }
   },
   "id": "521a2c8e2d7f62a4"
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "outputs": [
    {
     "data": {
      "text/plain": "   User_id  Coupon_id  Date_received     label\n0  4129537       9983       20160712  0.009837\n1  6949378       3429       20160706  0.232765\n2  2166529       6928       20160727  0.004589\n3  2166529       1808       20160727  0.004763\n4  6172162       6500       20160708  0.047865",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User_id</th>\n      <th>Coupon_id</th>\n      <th>Date_received</th>\n      <th>label</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>4129537</td>\n      <td>9983</td>\n      <td>20160712</td>\n      <td>0.009837</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>6949378</td>\n      <td>3429</td>\n      <td>20160706</td>\n      <td>0.232765</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2166529</td>\n      <td>6928</td>\n      <td>20160727</td>\n      <td>0.004589</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>2166529</td>\n      <td>1808</td>\n      <td>20160727</td>\n      <td>0.004763</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>6172162</td>\n      <td>6500</td>\n      <td>20160708</td>\n      <td>0.047865</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# test prediction for submission\n",
    "y_test_pred = model.predict_proba(test[predictors])\n",
    "submit = test[['User_id','Coupon_id','Date_received']].copy()\n",
    "submit['label'] = y_test_pred[:,1]\n",
    "submit.to_csv('submit2.csv', index=False, header=False)\n",
    "submit.head()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-09-19T12:05:43.896167900Z",
     "start_time": "2024-09-19T12:05:42.796138300Z"
    }
   },
   "id": "9e2cf747a85c4d9c"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
